面向对象的php对象,类和方法


Object oriented php object,class and methods

$Clint_ip=$this->request->clintIp();

我可以对这条线有一个清晰的概念吗?在这里我知道$clint_ip是一个变量,但是接下来的三个是什么?哪个是对象?哪一个是方法?哪一个是类?

我只需要理解这句话。在几个项目中,我看到了这种类型的生产线。在这一行中,哪一个称为对象?如果你愿意,你可以再举一个例子。在这里,$this对象或类或方法?

是的,

$Clint_ip是一个变量,

  1. 像其他基于对象的编程语言一样$this是包含它的类的this。(有关此的更多信息,何时使用自我而不是$this?
  2. request看起来像另一个类的对象
  3. 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(( 的对象。