Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php是否/为什么强制您使用对象构造函数_Php_Oop_Object_Server - Fatal编程技术网

php是否/为什么强制您使用对象构造函数

php是否/为什么强制您使用对象构造函数,php,oop,object,server,Php,Oop,Object,Server,我一直在研究PHP中的对象。我所看到的所有示例甚至在它们自己的对象上都使用对象构造函数。PHP是否强迫您这样做?如果是,为什么 例如: <?php class Person { public $isAlive = true; public $firstname; public $lastname; public $age; public function __construct($firstname, $lastname, $age) {

我一直在研究PHP中的对象。我所看到的所有示例甚至在它们自己的对象上都使用对象构造函数。PHP是否强迫您这样做?如果是,为什么

例如:

<?php
    class Person {
    public $isAlive = true;
    public $firstname;
    public $lastname;
    public $age;

    public function __construct($firstname, $lastname, $age) {
      $this->firstname = $firstname;
      $this->lastname = $lastname;
      $this->age = $age;
    }

    public function greet() {
      return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
       }
    }

    // Creating a new person called "boring 12345", who is 12345 years old ;-)
    $me = new Person('boring', '12345', 12345);

    echo $me->greet(); 
    ?>

您将
\u construct()
函数与实例化类/对象的方式错误地关联

您不必使用
\uu construct()
函数(它是可选的)。但是,在使用类的方法之前,必须先创建它的实例

<?php
class Person {
    public $isAlive = true;
    public $firstname;
    public $lastname;
    public $age;
}
$person = new Person(); //Add this line
$person->firstname = "John";
echo $person->firstname;
?>

因为类定义就是定义

要创建类(实际对象)的实例,必须实例化它。实际上,您可以实例化同一类的许多不同对象/实例


您不必定义构造函数方法。。。。。但是您必须使用
new
实例化类变量有两种方法。 1.变量应为公共静态变量,如:

class Person {
    public $isAlive = true;
    public static $firstname;
    public $lastname;
    public $age;
}
Person::$firstname = "John";
echo Person::$firstname;
二,。通过类对象访问变量

class Person {
    public $isAlive = true;
    public $firstname;
    public $lastname;
    public $age;
}
$person->firstname = "John";
echo $person->firstname;
顺便说一下,PHP至少可以自己创建对象PHP5.5。 你的代码没有崩溃。这只是一个警告: 警告:从中的空值创建默认对象…

那为什么呢? 这就是PHP处理内存的方式。在第一种情况下,static表示php已经为变量分配了内存,您可以使用它。第二种情况。通过使用NEW命令,您可以向php发出分配内存并将类加载到其中的指令。因此,在创建类之后,您可以访问var

在第三种情况下,PHP自行调用new Person,并向您发出警告。我强烈建议不要指望php的默认行为。始终以显式方式创建对象

class Person {
    public $isAlive = true;
    public $firstname;
    public $lastname;
    public $age;
}
$person->firstname = "John";
echo $person->firstname;