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


    属性

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

  • 相关阅读:
    第三次上机练习
    第三次作业
    第二次上级练习
    第二次作业
    第一次上机练习
    第一次作业
    4.20
    4.16
    4.10
    4.9
  • 原文地址:https://www.cnblogs.com/saw2012/p/2889779.html
Copyright © 2020-2023  润新知