PHP 类 静态static

报错:PHP Fatal error: Access to undeclarde static property:  model::$order_type

 

原因: 在文件中调用model层的静态变量时,不是直接用类名,而是用的时对象名。

          错: $test_model = new TestModel();    

                 $test_model::$order_type;

 

          对:如果要访问静态变量,直接用类名:TestModel::$order_type;

 

总结:const时一个定义常量的关键字,在php中定义常量使用的时define函数,但是在类中定义常量使用的时const关键字

         1、在程序中不能修改它的值

         2、访问const修饰的成员属性要使用类名,在本类中使用self关键字,但不使用 $也不能使用对象来访问

 

         static关键字可以描述类中的成员属性和成员方法

          1、static的成员属于类,而不属于任何对象

          2、static的成员是在类第一次加载的时候分配空间,其他类无法访问的,只对类的实例共享,能一定程度对类成员形成保护

          3、静态变量放到了初始化静态段,在类的第一次加载的时候放入的,可以让堆内存的每个对象共享,调用静态方法也是用类名

          4、在类的静态方法中不能访问类的非静态成员,但是非静态方法可以访问静态成员,self::成员属性

          5、访问:类名:静态变量;类名:静态函数;类名:静态函数名;

 

注意:在controller里面不能声明一个变量来引用model里面的一个变量,因为在后期重构的时候会很麻烦

         如果要用model中的静态变量,最优的方法时在model层定义一个静态方法,在静态方法中做好判断,原则就是尽量不能暴漏类的内部属性

 

多看优秀的人写的代码并且多想想为什么这么写。

 

posted @ 2017-06-19 19:17  魏什么魏什么啊  阅读(1282)  评论(0编辑  收藏  举报