In PHP, the class name and the method name can be the same. If the method name and the class name are the same and there is no "__construct", then the method will be regarded as the constructor. The PHP constructor is a special function in a class. When using the new operator to create an instance of a class, the constructor will be automatically called.
The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer
Constructor
__construct ( mixed ...$values = "" ) : void
PHP allows developers to define a method as a constructor in a class. Classes with a constructor will call this method every time a new object is created, so it is very suitable for doing some initialization work before using the object.
Note: If a constructor is defined in a subclass, the constructor of its parent class will not be implicitly called. To execute the parent class's constructor, you need to call parent::__construct() in the child class's constructor. If the subclass does not define a constructor, it will be inherited from the parent class like an ordinary class method (if it is not defined as private).
Example #1 Constructor in inheritance
<?php class BaseClass { function __construct() { print "In BaseClass constructor\n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); print "In SubClass constructor\n"; } } class OtherSubClass extends BaseClass { // 继承 BaseClass 的构造函数 } // In BaseClass constructor $obj = new BaseClass(); // In BaseClass constructor // In SubClass constructor $obj = new SubClass(); // In BaseClass constructor $obj = new OtherSubClass(); ?>
Unlike other methods, when __construct() is overridden by a method with different parameters from the parent class __construct(), PHP does not generate an E_STRICT error message.
Since PHP 5.3.3, in the namespace, methods with the same name as the class name are no longer used as constructors. Classes that are not in the namespace are not affected. The constructor is a normal method that is automatically called when the corresponding object is instantiated. Therefore, any number of parameters can be defined, which can be required, have types, or have default values. The parameters of the constructor are placed in parentheses after the class name.
Example #2 Using constructor parameters
<?php class Point { protected int $x; protected int $y; public function __construct(int $x, int $y = 0) { $this->x = $x; $this->y = $y; } } // 两个参数都传入 $p1 = new Point(4, 5); // 仅传入必填的参数。 $y 会默认取值 0。 $p2 = new Point(4); // 使用命名参数(PHP 8.0 起): $p3 = new Point(y: 5, x: 4); ?>
If a class does not have a constructor and the parameters of the constructor are not required, the parentheses can be omitted.
Recommended learning: "PHP Video Tutorial"
The above is the detailed content of What is the same method with class name in PHP. For more information, please follow other related articles on the PHP Chinese website!