• 技术文章 >后端开发 >PHP问题

    PHP中与类名相同的方法是什么

    青灯夜游青灯夜游2021-06-07 13:20:47原创65

    在PHP中,类名与方法名可以相同,如果方法名和类名相同,且没有“__construct”,那么该方法会被当做构造函数。php构造函数是类中的一个特殊函数,当使用new操作符创建一个类的实例时,构造函数将会自动调用。

    本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

    构造函数

    __construct ( mixed ...$values = "" ) : void

    PHP 允许开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。

    注意: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。

    示例 #1 继承中的构造函数

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

    与其它方法不同,当 __construct() 被与父类 __construct() 具有不同参数的方法覆盖时,PHP 不会产生一个 E_STRICT 错误信息。

    自 PHP 5.3.3 起,在命名空间中,与类名同名的方法不再作为构造函数。不使用命名空间中的类则不受影响。 构造函数是一个普通的方法,在对应对象实例化时自动被调用。 因此可以定义任何数量的参数,可以是必选、可以有类型、可以有默认值。 构造器的参数放在类名后的括号里调用。

    示例 #2 使用构造器参数

    <?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);
    ?>

    如果一个类没有构造函数,以及构造函数的参数不是必填项时,括号就可以省略。

    推荐学习:《PHP视频教程

    以上就是PHP中与类名相同的方法是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:PHP 构造函数
    上一篇:php程序由几部分组成 下一篇:什么是cookie.session ?他们之间的区别是?(详细介绍)
    第16期线上培训班

    相关文章推荐

    • PHP如何使用mysqli_real_escape_string()函数?• PHP如何使用Ds\Vector copy()函数?• php数组怎么删除第一个元素• 如何使用phpstorm自带服务器运行php项目(图文详解)• 手把手教你Linux PHP环境部署与项目上线(分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网