$Clint_ip=$this->request->clintIp();
我可以对这条线有一个清晰的概念吗?在这里我知道$clint_ip是一个变量,但是接下来的三个是什么?哪个是对象?哪一个是方法?哪一个是类?
我只需要理解这句话。在几个项目中,我看到了这种类型的生产线。在这一行中,哪一个称为对象?如果你愿意,你可以再举一个例子。在这里,$this对象或类或方法?
是的,
$Clint_ip
是一个变量,
- 像其他基于对象的编程语言一样
$this
是包含它的类的this
。(有关此的更多信息,何时使用自我而不是$this? -
request
看起来像另一个类的对象 clintIp()
是request
对象类的public
方法
您提供的代码似乎来自类内部。
类的表示方式如下:
class Example {
private $foo;
public $bar;
public function __construct() {
}
public function method() {
}
private function other() {
}
}
创建此类的对象时,可以使用以下格式:
$example = new Example();
这将调用构造函数__construct()
。
创建("实例化"(此对象后,可以使用 -> 调用对象的属性。
所以,我可以说
$example->bar = "Foo";
将此属性设置为字符串。
您的代码
在代码中,属性"request"本身就是一个对象(类的实例(。
$Clint_ip=$this->request->clintIp();
下面是可以使用的代码示例
class Example {
public $request;
public function __construct($request) {
$this->request = $request;
}
}
class Request {
public function clintIp() {
//return something
}
}
然后是一些上下文:
$request = new Request;
$example = new Example($request);
$clint_ip = $example->request->clintIp();
所以在这里,$clint_ip
是变量。 $example
和$request
是对象(类的实例(,clintIp()
是请求对象的方法。
现在,关于"$this"。这表示它位于对象"示例"中:
假设类示例现在有一个方法
public function test() {
return $this->request->clintIp();
}
$this
表示它位于对象的实例内。static
上下文中,使用"self::",如其他答案之一所述。
你在具有请求属性的对象内部。请求属性包含带有返回客户端 ip 的方法 clintIp(( 的对象。