属性
众所周知类的属性三个,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的一个重要东西。