【问题标题】:PHP Class - get current requestPHP 类 - 获取当前请求
【发布时间】:2019-05-19 01:34:30
【问题描述】:

我在 stackoverflow 上的第一个问题:

我有一个加载 JSON 数据的类。

这是课程:

class example {
public $url = array(
    "location" => "http://www.example.com/location/?{city}.json",
);
public $location = array();
public function load($url_template = NULL, $params = array(), $overwrite = false) {
    $this->$url_template = $this->load_json(
        $this->build_url($url_template, $params)
    );
}
    public function load_json($url) {
        return json_decode($url);
    }
}

我在外面使用:

    $example = new example();
    $example->load("location", array(
    'city' => 'Boston',
    ));

当我这样做时

echo $example->country->name;
echo $example->blabla->blub;

我想要类似的信息

$example->country->name 被调用,返回值为 "Boston"

$example->blabla->blub 被调用,但属性“blabla”不存在 并且属性“blub”也不存在,因此返回值为 “不适用”

在班级内。

谢谢你, 哈里博

【问题讨论】:

  • 有点不清楚,如果你问如何实现请求验证,它有点宽泛,你需要缩小主题或做更多的研究来弄清楚你到底需要什么帮助。
  • github.com/Respect/Validation 是一个不错的库
  • @Devon 当我使用 get_object_vars 时,我看到了当前对象的所有属性。我想看到的是通过 ussign echo $class->property 从函数外部请求了对象的哪个属性

标签: php class properties


【解决方案1】:

您可以做的第一件事是验证 JSON(如果您有架构)输入。

关于 JSON 模式的更多信息: https://json-schema.org/

这里有更多信息: JSON schema validation with PHP

当然,您可以在 PHP 中完成所有操作并验证每个可能的条目。

if (isset($class->country)) {
  if (isset($class->country->name) ) {
      // validate this is really a country
  } else {
   // no country name set ...
  }
  // .. more validation ..
} else {
 // no country given
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 2018-01-09
    • 2012-10-24
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    相关资源
    最近更新 更多