在PHP中:(双冒号)和->(箭头)有什么区别?

在PHP中:(双冒号)和->(箭头)有什么区别?

在PHP中访问方法有两种不同的方法,但是有什么不同呢?

$response->setParameter('foo', 'bar');

sfConfig::set('foo', 'bar');

我假设->(大于符号或雪佛龙的破折号)用于变量的函数,以及::(双冒号)用于类的函数。对,是这样?

=>赋值运算符只用于分配数组中的数据?这与=赋值操作符用于实例化或修改变量?



浮云间
浏览 1169回答 3
3回答

达令说

::用于静态语境当某些方法或属性声明为静态时:class Math {     public static function sin($angle) {         return ...;     }}$result = Math::sin(123);此外,::运算符(范围解析运算符,a.k.a)帕马耶姆·内库多塔耶姆)在调用父类的方法/属性时,在动态上下文中使用:class Rectangle {      protected $x, $y;      public function __construct($x, $y) {          $this->x = $x;          $this->y = $y;      }}class Square extends Rectangle {     public function __construct($x) {         parent::__construct($x, $x);     }}->用于动态语境当您处理某个类的某个实例时:class Hello {     public function say() {        echo 'hello!';     }}$h = new Hello();$h->say();顺便说一句:我不认为在没有OOP经验的情况下使用Symfony是个好主意。

婷婷同学_

实际上,通过这个符号,我们可以调用一个静态的、不依赖于其他初始化的类方法.class Test {     public $name;     public function __construct() {         $this->name = 'Mrinmoy Ghoshal';     }     public static function doWrite($name) {         print 'Hello '.$name;     }     public function write() {         print $this->name;     }}在这里,doW区()函数不依赖于任何其他方法或变量,它是一个静态方法。这就是为什么我们可以通过这个操作符调用这个方法而不初始化这个类的对象。Test::doWrite('Mrinmoy');   // Output: Hello Mrinmoy.但如果你想打电话给write方法将生成错误,因为它依赖于初始化。
打开App,查看更多内容
随时随地看视频慕课网APP