前者学PHP之面向对象序列第一篇——类和对象

前边的话

  面向对象程序设计(OOP)是一种计算机编程架构。总括机程序由单个可以起到子程序成效的单元或对象组成,为了兑现完全运算,每个对象都能接到音信、处理数据和向别的对象发送音讯。OOP达到了软件工程的三个目的:重用性、灵活性和扩张性,使编程的代码更简短、更便于维护,并且拥有更强的可重用性。PHP紧要通过类和对象来兑现面向对象的次第设计,本文将详细介绍php的类和对象

  通过打听PHP的类和对象,对深切了然javascript的一连有促进效用,关于javascript继承的详细音信挪动至此

 

ca88官网,类

  类与目的的涉嫌就像是模具和铸件的涉及,类的实例化结果就是目的,而目标的肤浅就是类。类描述了一组有同等特性(属性)和千篇一律行为(方法)的靶子。在开发时,要先抽象类再用该类去创造对象,而在程序中直接利用的是目的而不是类

  类是一个独门的主次单位,是具备相同属性和劳动的一组对象集合。它为属于此类的持有目标提供了联合抽象描述,其内部蕴涵成员属性和劳动章程五个重半数以上

  每个类的概念都以第一字class起头,后边跟着类名,前面跟着一对花括号,里面包罗类的性能与格局的概念

  一个类可以包括有属于自己的常量,变量(称为“属性”)以及函数(称为“方法”)

  [注意]动用->操作符时,变量$var前边的泰铢符号$是要简明的

<?php
class SimpleClass
{
    //成员属性
    public $var = 'a default value';

    //成员方法
    public function displayVar() {
        echo $this->var;
    }
}
?>

 

分子属性

  类的变量成员叫做“属性”,或者叫“字段”、“特征”。属性评释是由主要字public、protected或private开端,然后跟一个普普通通的变量评释来组合。属性中的变量可以伊始化,可是先河化的值必须是最终的值,而不应是带运算符的表明式、变量、方法或函数调用

  假诺向来利用 var 表明属性,而从未用 public,protected 或 private
之一,PHP5会将其视为 public

public $var3 = 1+2;             //错误格式
public $var4 = self::myStaticMethod();     //错误格式
public $var5 = $myVar;             //错误格式

public $var6 = 100; //普通数值(4个标量:整数、浮点数、布尔、字串)
public $var6 = myConstant;         //常量
public $var7 = self::classConstant;     //静态属性
public $var8 = array(true, false);      //数组

 

成员方法

[修饰符] function 方法名(参数..){
    [方法体]
    [return 返回值]
}

  成员方法的修饰符包含:public、protected、private、static、abstract、final

  表明的成员方法必须和目的相关,无法是一对从未有过意义的操作

public function say(){   
    echo "说话";      
}       
public function run(){    
    echo "走路";      
}

 

对象

  在创立世界里,所有的事物都是由对象和目的之间的关联组成的。对象是系统中用来讲述客观事物的一个实体,它是构成系统的一个主干单位

  要创设一个对象,也就是实例化一个类,必须利用new关键字

  借使在new之后随着的是一个涵盖有类名的字符串,则该类的一个实例同样被创设

<?php
$instance = new SimpleClass();

// 也可以这样做:
$className = 'Foo';
$instance = new $className(); // Foo()
?>

 

成员访问

  类中带有成员属性与成员方法四个部分,可以利用“new”关键字来创建一个目的,即:$引用名
= new
类名(构造参数);可以运用卓殊运算符“->”来走访对象中的成员属性或成员方法

$引用名 = new 类名(构造参数);
$引用名->成员属性=赋值;   //对象属性赋值    
echo $引用名->成员属性;   //输出对象的属性    
$引用名->成员方法(参数);//调用对象的方法

  [注意]即使目的中的成员不是静态的,那么那是绝无仅有的拜会情势

  当把一个目的已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该目的赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已开立的对象建立一个新实例

<?php
class SimpleClass{

}
$instance = new SimpleClass();
$assigned   =  $instance;
$reference  =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; 

var_dump($instance);//null
var_dump($reference);//null
/*
object(SimpleClass)[1]
  public 'var' => string '$assigned will have this value' (length=30)
 */
var_dump($assigned);
?>

 

this

  当一个措施在类定义内部被调用时,有一个可用的伪变量this,特殊对象的引用this就是在目的内部的积极分子方法中,代表本对象的一个引用,但只可以在目的的分子方法中选择,不管是在目标内部使用$this访问自己目的内部成员。如故在目的外部通过对象的引用名称访问对象中的成员,都急需动用特殊的运算符“->”来形成访问

<?php
class A
{
    function foo()
    {
        if (isset($this)) {
            echo '$this is defined (';
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}

class B
{
    function bar()
    {
        // Note: the next line will issue a warning if E_STRICT is enabled.
        A::foo();
    }
}

$a = new A();
$a->foo();//$this is defined (A) 

A::foo();//$this is not defined. 
$b = new B();
$b->bar();//$this is defined (B) 

B::bar();//$this is not defined.
?>

相关文章