基本概念


基本概念

class

每个类的定义都以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。伪变量 $this 可以在当一个方法在对象内部调用时使用。$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用。看下面例子:

Example #1 面向对象语言中的 $this 变量

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

class 
B
{
    function 
bar()
    {
        
A::foo();
    }
}

$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>

以上例程会输出:

$this is defined (a)
$this is not defined.
$this is defined (b)
$this is not defined.

Example #2 简单的类定义

<?php
class SimpleClass
{
    
// 成员声明
    
public $var 'a default value';

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

Example #3 类成员的默认值

<?php
class SimpleClass
{
    
// 无效的类成员定义:
    
public $var1 'hello '.'world';
    public 
$var2 = <<<EOD
hello world
EOD;
    public 
$var3 1+2;
    public 
$var4 self::myStaticMethod();
    public 
$var5 $myVar;

    
// 正确的类成员定义:
    
public $var6 myConstant;
    public 
$var7 self::classConstant;
    public 
$var8 = array(truefalse);


}
?>

Note:

除此之外还有不少用于处理类与对象的函数,详情参见 类 / 对象函数

new

要创建一个对象的实例,必须创建一个新对象并将其赋给一个变量。当创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常

Example #4 创建一个实例e

<?php
$instance 
= new SimpleClass();
?>

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

Example #5 对象赋值

<?php
$assigned   
=  $instance;
$reference  =& $instance;

$instance->var '$assigned will have this value';

$instance null// $instance and $reference become null

var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>

以上例程会输出:

NULL
NULL
object(SimpleClass)#1 (1) {
   ["var"]=>
     string(30) "$assigned will have this value"
}

extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被覆盖,除非父类定义方法时使用了 final 关键字。可以通过 parent:: 来访问被覆盖的方法或成员。

Example #6 简单的类继承

<?php
class ExtendClass extends SimpleClass
{
    
// Redefine the parent method
    
function displayVar()
    {
        echo 
"Extending class ";
        
parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

以上例程会输出:

Extending class
a default value

«  前言
» 属性
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 放手也许是一种解脱 【初恋的故事】清风 我与新区共成长550字 经典公益歌曲,世界中国经典公益歌曲 Mr.Simple ╰'发表日志:十月,旋转在风车里的童话 月球旅行记作文450字 党的性质的理解思想汇报 乡村党员两学一做心得体会 校园文化标语精选 老了真好 新炊间黄粱的上一句 简历中最精练的自我评价 五月的麦子,你缠绵了我的梦 有关亲情友情的作文 关于感恩的演讲稿范文1000字 2016我们正青春演讲稿 清早 鱼 杏林子 2013年私企经理年终工作总结 小学三年级作文550字:家 移动通讯营业员实习报告 我融入那美丽的矿区里 童年,触手不及 一年级试卷:语文第一册期末测试题 2016年送温暖活动通知 幽人思考 柯南每周课堂(1)——如何破解暗语作文1000字 人生最美的是过程,最难的是相知,最苦的是等待,最幸福的是真爱... 战机作文1600字 丹妮奇遇记(14)作文800字 倾听是一种姿态作文400字 十世国殇 父亲的模样 生活如茧650字 2015工作调动申请报告 小学五年级作文600字:读《汤姆索亚历险记》 女孩看着他们离开的背影 眼泪留了出来 初中初一作文750字:我家附近 市旧城建设办公室工作总结 建设“幸福XX”实施方案 爸爸妈妈不在家350字 如果时光忘记将你带走 港湾情作文1100字 2013—2014学年度第一学期初级中学团总支工作计划 2012年小学四年级班主任工作总结四篇 忐忑的心情有谁懂? 奉献老师爱的力量感化每一个学生演讲 树屋之七--关注留守儿童中篇小说 痴人狂梦之那些年那些人那些事 续不上的缘 班主任述职报告

Copyright © 2016 phpStudy |