第十七节:类与对象属性类常量自动加载对象

属性

众所周知类的属性三个,public,private,protected。

属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指PHP脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段算出的常数。

也就说明下列声明的正确与否

 1 <?php
 2 class Simpleclass{
 3   //错误的声明
 4   public $var1='hello'.'world';
 5   public $var2=<<<EOT
 6 hello world
 7 EOD;
 8   public $var3=1+2;
 9   public $var4=self::mystaticmethod();
10   public $var5=$myvar;
11   //正确的属性声明
12   public $var6=myconstant;
13   public $var7=array(true,false);
14   //在PHP 5.3.0及之后,下面的声明也正确
15   public $var8=<<<'EOT'
16 hello world
17 EOD;    
18     }
19 ?>

 类常量

我们可以在类外面定义常量,他的作用域是全局的,那么我们能不能在类内部定义一个只有类的作用域有效的常量呢?是可以的。

 1 <?php
 2 class foo{
 3 //默认为public的权限    
 4 const constant='constant value';
 5 static function bar(){
 6     //类内部调用方式
 7     echo self::constant;
 8     }     
 9     }
10 //类外部调用方式    
11 foo::constant;
12 //注意const类常量与static静态方法和静态属性 使用方法几乎一样
13 foo::bar();    
14 ?>

 类的自动加载

这是一种很好,很灵活的价值方式,MVC应该就是这么实现的

我有如下文件结构

-nnnnnn

  -test.php

  -class

    -a.class.php

    -b.class.php

a.class.php内容

1 <?php
2 class a{
3 function a(){
4     echo 'a';
5     }    
6     }
7 ?>

b.class.php内容

1 <?php
2 class b{
3 function b(){
4     echo 'b';
5     }    
6     }
7 ?>

test.php

1 <?php
2 function __autoload($class){
3     require_once("class/$class.class.php");
4     }
5 $a=new a();//输出a
6 $b=new b();    //输出b    
7 ?>

自动帮我加载了一个文件夹里,所有命名方式一样的类,非常智能,非常方便,如果我这个文件夹里有60个类,那这个功能就非常重要了,MVC的一个重要东西。

原文地址:https://www.cnblogs.com/saw2012/p/2889779.html