php直接用类名调用静态方法会不会触发类或者父类的构造函数?

如题,php直接用类名调用静态方法,两个问题:

1 会调用当前类的构造函数吗?

2 会调用当前类的父类的构造函数吗?

阅读 10.1k
3 个回答

你应该动手测试一下,浏览器是最好的老师
实例一:

<?php
class A{
    function __construct(){echo"A::构造函数";}
    static function myFun(){echo "你好,很高兴为你答题!";}
}
A::myFun();
?>

实例二:

<?php
class A{
    function __construct(){echo"A::构造函数";}
}
class B extends A{
    static function myFun(){echo "你好,很高兴为你答题!";}
}
B::myFun();
?>

1.不会
2.不会

构造方法只在实例化时调用,静态方法没有实例生成,不会调用构造方法

不会的,只要在一个类被实例化的时候才会调用其构造方法,静态方法是存储在静态代码区的,是随着类的加载而被加载进来的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏