为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
浮云间 2019-07-25 14:14:08
在PHP中:(双冒号)和->(箭头)有什么区别?在PHP中访问方法有两种不同的方法,但是有什么不同呢?$response->setParameter('foo', 'bar');和sfConfig::set('foo', 'bar');我假设->(大于符号或雪佛龙的破折号)用于变量的函数,以及::(双冒号)用于类的函数。对,是这样?是=>赋值运算符只用于分配数组中的数据?这与=赋值操作符用于实例化或修改变量?
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

::用于静态语境当某些方法或属性声明为静态时:

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是个好主意。




查看完整回答
反对 回复 2019-07-27
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

实际上,通过这个符号,我们可以调用一个静态的、不依赖于其他初始化的类方法.

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方法将生成错误,因为它依赖于初始化。




查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 1168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信