Home > Backend Development > PHP Problem > What is the same method with class name in PHP

What is the same method with class name in PHP

青灯夜游
Release: 2023-03-10 11:38:01
Original
3177 people have browsed it

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.

What is the same method with class name in PHP

The operating environment of this tutorial: windows7 system, PHP7.1 version, DELL G3 computer

Constructor

__construct ( mixed ...$values = "" ) : void
Copy after login

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();
?>
Copy after login

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);
?>
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template