文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>php基础知识:类与对象(1)

php基础知识:类与对象(1)

时间:2021-01-15  来源:互联网

类的定义:

   以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。

伪变量$this

可以在当一个方法在对象内部调用时使用。$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用。

//??静态调用的内部到底是怎样的?

看个例子:

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()

   {

       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.

/*我希望知道这个例子的内存等的具体实现,我暂时无法理解。如果有人可以讲清楚,可以告诉我。我们宿舍牛头现在正在冬眠,等他醒来,我会问。*/

new

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

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

(这几句话虽然很短,但是未必容易理解。)

例子如下:

class SimpleClass

{

   // 成员声明

   public $var = 'a default value';

   // 方法声明

   public function displayVar() {

       echo $this->var;

   }

}

//看下面的图.1>new 在heap(堆)中实例化一个对象。2>将指针$instance指向他

$instance = new SimpleClass();

//3>将指针$assigned指向heap中的实例化对象

$assigned   =  $instance;

//4>将$instance的引用(地址)赋值给$reference

$reference  =& $instance;

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

$instance = null; // 5>间断$instance与heap中实例的连接。

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:: 来访问被覆盖的方法或成员。(继承的机制到底怎样的?) 

源代码如下:

class ExtendClass extends SimpleClass

{

   // Redefine the parent method

   function displayVar()

   {

       echo "Extending class\n";

       parent::displayVar();

   }

}

$extended = new ExtendClass();

$extended->displayVar();

输出:

Extending class

a default value

以上就是php基础知识:类与对象(1)的全部内容,希望对你的学习有所帮助。

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载