魔术函数、魔术常量,抽象类、方法

魔术函数
__construct()  构造函数  __descturct()  析构函数
魔术常量
__LINE__   输出当前代码所在行  __FILE__   输出当前文件的物理位置  __DIR__    输出当前文件的路劲
__CLASS__  输出所在的类  //不在类中不输出  __FUNCTION__ 输出所在函数  //不在类中不输出

//抽象类结构
abstract class Animal
{    
    public $name;
    protected $age;
    abstract public function cry();//抽象方法,不能包含方法体({...})
    public function getname()
    {//实现方法
      return $this->name;
    }
}
class Cat extends Animal
{
    public function cry()
    {      
    echo"实现抽象方法";
    }
}

抽象类特点:
1.只需(能)被继承,不需(能)实例化;2.抽象类可以不包含抽象方法;3.只有抽象类才能包含抽象方法4.一个子类继承抽象类,必须实现抽象方法,或者将自身声明为抽象类
目的:提高代码复用性,同时有利于设计类。

面向对象便会有接口的概念 interface

//定义规范和平级实现
interface iUsb
{//规范了方法名和传入参数
    public function start(); //接口中的方法不能有方法体。
    public function stop();
}

//实现接口
//相机类

class Camera implements iUsb
{ //可以同时实现多接口
    public function start()    //必须实现接口中的所有方法    
    {   
        echo"相机开始工作了";
    }
    public function start()
    {   
        echo"相机停止工作了";
    }
}        

//手机类

class Phone implements iUsb
{
    public function start()
    {   
        echo"手机开始工作了";
    }
    public function start()
    {   
        echo"手机停止工作了";
    }
}

接口:可以理解为更加抽象的抽象类,体现了高内聚(封装性),低耦合(模块干扰性)
特点:
接口不能被实例化。
接口中可以有属性,但是必须是public const A =90;常量没有$符号,public const,使用接口名::常量名,一般大写.
接口中的属性和方法必须是public ---从逻辑上是合理的。
对比:
继承:体现的编程思路线型实现(继承)。
接口:体现的编程思路星型实现,达到高内聚,低耦合。

接口与继承类的区别

(单)继承的好处和局限性:好处:与c++的多继承相比,单继承保证了类内的纯洁性,(避免不同类间的干扰)
局限性:功能扩展受限,内聚和耦合性差
接口:在不打破类层级关系(继承关系)的基础上,实现功能扩展。

final 类:希望某个类不被其他类继承(可能出于安全考虑等)
final 方法:希望某个方法不被其他方法重写(可能出于安全考虑等)
final 不能修饰属性 ---逻辑上是合理的。

const //全局数据区的都是属于类,而非类的对象
基本用法:const ABC = 123;
类外部访问:
类名::ABC 接口::ABC
类内部访问
类名::ABC 接口::ABC  self::ABC
1.常量在被定义时必须给出值。2.无需修饰符3.不能再被修改,否则报错。

C#面向对象编程:就是使用方法类和实体类的编程思路
php面向对象编程:就是使用类的编程思路

以上是编程最优先考虑的思路

知识小点:
  php类文件:Abc.class.php  
  文件的引用:require_once "Abc.class.php"
  客户端数据校验   js  isNAN(x) 不是数,返回一个真。
  onsubmit="return chech()"
  document.getElementById("num1").value;
  服务器端数据校验   if(!isset($_REQUEST['num']))
 

php的实体类

class Word
{
    private $en;
    public function setEn($en)
    {//不同于.net的实体类机制,手动调用,用于取值,赋值。
        $this->en=$en;
    }
    public functon getEn()
    {
    return $this-en;
    }
}        

$xmldoc=new DOMDocument();
$xmldoc->load("words.xml");
$en=$word->getEn();
$root=$xml->getElementById("words")->item(0);

posted @ 2014-03-02 16:48  曹桦伟  阅读(324)  评论(0编辑  收藏  举报