请问如果一个类内的成员函数不是静态的,那能不能直接在类外,不实例化类的前提下访问这个非静态成员函数?
class cls1{
    static function func1(){echo 'static';}
    function func2(){echo 'func';}
}
cls1::func1();
cls1::func2();
我这样测试了一下,结果成功了。请问这样做标准吗?或者说规定有没有说这样做不规范或者不好的

解决方案 »

  1.   

                    |「->」的访问                    |   「::」的访问
    一般成员变量     |     OK                  | NG
    静态成员变量     |     NG       | OK 
    一般成员函数     |     OK                 | OK(函数内不可使用「$this」)
    静态成员函数     |     OK(函数内不可使用「$this」) |   OK(函数内不可使用「$this」) 
      

  2.   


                     |「->」的访问                    |   「::」的访问
    一般成员变量     |     OK                  | NG
    静态成员变量     |     NG       | OK 
    一般成员函数     |     OK                 | OK(函数内不可使用「$this」)
    静态成员函数     |     OK(函数内不可使用「$this」)    |   OK(函数内不可使用「$this」) 
      

  3.   

    我是看不惯cls1::func2();这种写法
    还是人家java严格
      

  4.   

    我也看不惯cls1::func2();这种写法
    谢谢回答了,那些数据,是自己测试的出的吗?