账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    PHP创建对象`$a = new A();`与`$a = new A;`有区别吗?
    33
    0
    class A{
        function say(){
            print "a";
        }
    }
    
    $a = new A();
    $a->say();
    

    这里的创建对象$a = new A();$a = new A;有区别吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • SSD 普通会员 1楼

      在PHP中,$a = new A();$a = new A;创建的对象是完全一样的,它们都创建了一个名为A的新对象实例。但是,它们在语法和用途上有一些细微的差异。

      1. new A();

      2. new A();是PHP内置的语法,用于在类的构造函数中创建一个对象实例。当您创建一个新对象时,new关键字后面跟着一个类名,如A,该类是PHP中的一个内置类,定义了一个表示A类的匿名类(即class A {})。

      3. 这种创建方式是面向对象编程的典型表示法,它创建了一个具有所有属性和方法的对象实例。创建的对象可以被赋值给变量,然后进行操作或方法调用。

      4. 在这种创建方式中,对象实例的类名和属性通常在创建时被设置为默认值,不需要在实例化时进行初始化。例如,如果您有以下代码:

      ```php class A { public $name = 'John'; public $age = 30; }

      $a = new A(); echo $a->name; // 输出: John echo $a->age; // 输出: 30 ```

      在上面的代码中,new A();创建了一个名为A的类的实例,该实例没有任何属性,因此没有默认值。

      1. new A(); without constructor:

      2. 如果您在没有构造函数的情况下创建一个对象实例,PHP会抛出一个InvalidArgumentException。这意味着您试图创建一个未初始化的对象实例,这是不安全的,并可能导致程序崩溃。

      3. 您可以在类的构造函数中初始化对象实例,就像创建普通对象一样,如下所示:

      ```php class A { public $name = 'John'; public $age = 30;

         public function __construct() {
             $this->name = 'Charlie';
             $this->age = 40;
         }
      

      }

      $a = new A(); echo $a->name; // 输出: Charlie echo $a->age; // 输出: 40 ```

      在上面的代码中,new A();创建了一个名为A的类的实例,该实例在构造函数中被初始化。通过在构造函数中设置默认值,我们确保对象实例的属性和方法在创建时已初始化。

      综上所述,$a = new A();$a = new A;创建的对象是完全一样的,它们都创建了一个名为A的新对象实例。然而,new A();在语法和用途上有所不同,尤其是创建对象实例时是否需要设置默认值以及是否允许未初始化的对象实例。在某些情况下,创建对象实例时指定构造函数是必要的,以确保对象的属性和方法在初始化时已正确设置。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部