• PHP 面向对象


    http://nqdeng.github.io/7-days-nodejs/#1.3.2  node学习地址

    http://codeigniter.org.cn/user_guide/toc.html   CI框架学习地址

    http://linux.chinaitlab.com/special/linuxcom/Index.html   linux  指令学习地址

    http://blog.csdn.net/xiongwjw/article/details/7333112  fiddle 教程

    http://www.infoq.com/cn/interviews/qzone-front-end   前端 qq空间博客

    一,PHP中的类:

    创建一个person类并实例化:

    class person{
    private $name;

    function setName($name){
    $this->name = $name;
    }
    function getName(){
    return $this->name;
    }
    }

    var personObj = new person();
    personObj->setName('july');

    echo personObj->getName();

    其中new  是实例化一个类,当实例化一个类时候,当定义对象有构造函数时候会默认调用,其中构造函数式 _construct():

    则上面的函数可以改造为:

    class person{

    private $name;
    function _construct($name){
    $this->name = $name;
    }

    function getName(){
    return $this->name;
    }
    }

    var personObj = new person('july');

    echo personObj->getName();

    二,PHP中析构函数:

    析构函数和构造函数相反,当一个对象被注销时候调用,php会在请求结束后确保所有资源都被释放,这样析构函数作用显得很微不足道。但在清空一个对象时候记录日志信息十分有用。

    class person{
    function _destruct()){
    echo "清空这个对象时候记录日志信息";

    }
    }

    var personObj = new person();

    echo personObj = null;//此时析构函数会默认调用

    三,$this解析

    在对象方法执行时候 php会自动定义个$this 变量,它表示一个对象本身能够利用它访问到在本对象中定义的变量,如上面的$name变量。

    四,public  protect  private 变量

    public:权限是最大的,可以内部调用,实例调用等。

    protected: 受保护类型,用于本类和继承类调用。

    private: 私有类型,只有在本类中使用。

    五,静态属性:

    不属于类的任何实例,访问方法前面加类名来限制它如下:

    <?php
    class myClass{
    static $mystaticVariable = 0;
    }
    echo myClass::$mystaticVariable;
    ?>

    六,常量

    在类中定义常量是用const进行申明,一般常理是用 大写字母,其中在类中self表示这个类本身

    <?php
    class myClass{
    const COLOR = "red";
    function showColor(){
    echo self::COLOR;

    }
    }
    echo myClass::COLOR;
    var obj = new myClass();
    echo obj->showColor;
    ?>

    七,对象克隆:

    class myClass{
    public $value = 1;

    }

    $obj1 = new myClass();
    $obj2 = $obj1;

    $obj2->value = 1;

    echo obj1->value;

    这个会在php中打印出1 而在php5中打印出2,因为php4中是一个对象拷贝,这样改变$obj2不会影响$obj1,而在php5中 $obj1是一个对象句柄,那么$obj2复制到的也是一个句柄,此时改变$obj2,改变的是喝$obj1指向的同一对象。

    八,面向对象中多态,继承使用

    <?php
    header("Content-type: text/html; charset=utf-8");

    class Animal{
    function makeSound(){
    echo "访问错误,只能通过子类继承访问";

    }

    };

    class dog extends Animal{
    function makeSound(){
    echo "狗叫";

    }
    };

    class bird extends Animal{
    function makeSound(){
    echo "鸟叫";

    }

    };

    function echoRightSound($obj){
    if($obj instanceof Animal){
    $obj->makeSound();
    }else{
    echo "输入错误的对象";
    }

    }

    echo echoRightSound(new dog);
    echo"<br>";
    echo echoRightSound(new bird);

    ?>

    如上面所示 ,dog和bird都继承与Animal都实现了父类的Animal的makeSound方法实现了多态。

    九,面向对象中抽象类:

    //************************面向对象中抽象类****************************//
    abstract class sharp{
    protected $x,$y;

    function setCenter($x,$y){

    $this->x = $x;
    $this->y = $y;

    }

    abstract function draw();
    }


    class drawObj extends sharp
    {

    function draw(){
    echo"<br>实例化一个抽象方法";
    }

    }

    $obj = new drawObj();
    $obj->draw();

    抽象类中方法一定要在子类中进行重写,不然会报错。

    十,接口:

    任何一个implements 接口类的对象,将自动获得这个接口定义的常量。接口类的所有方法都是默认 abstract

    //*****************定义接口*****************//
    interface logable(){
    function logString();
    }

    class Person implements logable{
    function logString(){
    echo "重写接口中定义的方法";
    }
    }

    接口同时也满足继承  如: interface I1 extends I2 I3 ......{}

    final  定义的方法表示继承类不能进行重写,同时也可以用final定义一个类,表示不允许其他类继承此类。

    ruby前端观察
  • 相关阅读:
    更换惠普G32笔记本的风扇和硬盘,内存条, 谨记 要做好CPU和显卡的 导热硅脂工作!
    怎么更新 WIN10里的SMBv1协议
    ubuntu-12.04.5-desktop-amd64 安装vmwaretools
    如何解决“ VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/cpuid.c:386 bugNr=1036521”
    联想移动硬盘无法访问 解决方法1
    阮一峰 ---开发者手册
    Earth Wind 一个查看全球风向的网站
    Linux帮助用法
    Linux历史命令管理以及用法
    Linux操作练习
  • 原文地址:https://www.cnblogs.com/rubyxie/p/3603701.html
Copyright © 2020-2023  润新知