自动加载类的知识点整理

//__tostring()方法

class  Ren      //造一个人类,里面有成员变量$name

{

  public  $name;

}

$r = new Ren();

echo $r;

//写出echo $r;命令是想输出刚造的对象$r,因为$r是人类里面的一个对象,因为直接输出是输出一个对象,这个对象没法直接输出来,因为它是一个对象类型不是个字符串类型所以该程序会报错。

//如果想在输出这个对象的时候不报错,而是显示一下这个类里面的信息。那就得在这个类里面加上一个方法。

class  Ren

{

  public $name;

  public  function  __tostring()    //加了__tostring()方法后,可以“输出该类是人类,name代表姓名”,这句话。这样就可以说明这个__tostring()方法是用来

                     //我们在输出这个对象的时候,能够有输出内容不报错。而且这个输出内容里面,我们可以简单地描述一下这个类这个对象是干

  {                   //什么用的,这个对象里面包含哪些成员,分别是做什么用的

    return  "该类是人类,name代表姓名";

  }

}

$r = new Ren();

echo  $r;

//克隆对象

class Ren

{

  public $name ="张三";

}

$r= new Ren;

$c= clone $r;      //又造了一个对象$c,这个$c是由前面已经造过的$r克隆来的,使用关键字clone.所以克隆来的$c与前面$r具有相同的东西。克隆来的$c和$r是

echo  $c->name;      //一模一样的。相当于我们把这个对象复制了两份。

//我在克隆出这个对象之后,我想修改一下这个对象里面的内容。也就是修改里面的成员变量name

//我们可以在克隆完之后,用对象调用它里面的成员变量来更改name的值。

$r= new Ren;

$c= clone $r;

$c->name = "李四";      //

//还可以在克隆的同时把它改掉。此时需要在这个类里面加上一个方法。

class Ren

{

  public $name ="张三";

  public function __clone()      //这个方法叫做克隆的方法。 在执行$c= clone $r;的时候会自动调用这个方法来执行,那么就可以在这个方法里面

  {                   //加上一些东西了,想把它名字给变了就在这个方法里面操作name就行       

    $this->name = "李四";    //在这个花括号里面,$this代表的是副本对象,也就是$this代表$c   原来的那个对象$r没有变化,也就是$r的name值还是张三

  }                //对原本没有进行改动,改动的是副本的name值。

}

$r= new Ren;

$c= clone $r;     

echo  $c->name;

//加载类

//第一种方法:用include      先建立一个php文件,名字改为  类名.class.php的形式。然后再将它保存在想要访问它的同一文件夹内。将这个文件里面的代码全部删除只写以

<?php 开头的内容。然后再在想要访问这个类的文件里面使用include();函数来进行加载。   其中括号里面写路径地址,也就是写类文件的地址。因为这两个文件是在同一个文件夹内的所以可以根据相对路径来找就可以了。相对路径:用./    其后面再写这个类文件的文件名。

include("./Ren.class.php");

$r= new Ren();      //命令为造一个对象$r

echo $r->name;      //输出一下这个刚造的对象调用的name成员变量。

时间: 2024-10-02 18:01:47

自动加载类的知识点整理的相关文章

自动加载类PHP中spl_autoload_register函数的用法

spl_autoload_register(PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们. 如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中.因为 spl_autoload_

php 自动加载函数、自动加载方法、自动加载类

在PHP开发过程中,如果希望从 外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来.这个在小规模开发的时候,没什么大问 题.但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且 require_once的代价很大. 在PHP5之前,各个PHP框架如果要实现类的自动加载,一般都是按照某种约定自己实现一个遍历 目录,自动加载所有符合约定规则的文件的类或函数. 当然,PHP

框架开发(五)----自动加载类

一 . 为什么自动加载 自动加载字面的意思就不解释了.我这里自动加载类解析下 是自动加载类文件的意思.__autoload方法完全可行,但是不要问为什么,还是用spl_autoload_register.不只是灵活,而且就是灵活,还是灵活,体现在__autoload只能这么命名,spl_auto_register() 能调用不同的函数. 二  自动加载函数原理   通常情况下,一个类的定义都是一个文件,当类与类需要相互引用的时候,就需要include(require)相应的类文件,带来的问题就是

php7扩展自动加载类.

使用php扩展来开发框架似乎越来越来成来主流了,如phalcon,鸟哥的yaf.这些框架都以高性能著称,相对纯php使用的框架而,php扩展实现的框架更快,不会带来额外的系统消耗.在php启动时便已加载了框架,并且常驻内存. 几乎所有框架都带自动加载类,以便更好的管理代码.php实现方法这里就不多介绍了,读者可以自行百度.这里将介绍如何在php扩展中实现. 扩展中的实现原理与php实现基本原理一致,都是基于 spl_autoload_register 函数实现. ZEND_METHOD(lxx_

PHP面向对象 – 自动加载类

在设计面向对象的程序开发时,通常为每个类的定义都单独建立一个PHP源文件.当你尝试使用一个未定义的类时,php会报一个致命错误.可以用include或require包含一个类所在的源文件,毕竟你知道要用到那个类.如果一个页面需要使用多个类,就不得不在脚本页面开头编写一个长长的包含文件的列表,将本页面需要的类全部包含进来.这样处理不仅繁琐,而且容易出错.  PHP提供了类的自动加载功能,这可以节省编程的时间.当你尝试使用一个PHP没有组织到的类时,它会寻找一个__autoload()的全局函数(不

php中自动加载类_autoload()和spl_autoload_register()实例详解

一._autoload 自动加载类:当我们实例化一个未定义的类时,就会触此函数.到了php7.1以后版本不支持此函数好像抛弃了 新建一个类文件名字自己随便去:news类在auto.php文件里面去实例news类而没有引入该类,可以用_autoload自动加载方法类去处理. news.class.php文件 class news{ function do_new() { echo 'aaa'; } } auto.php文件使用_autoload函数要定义函数体自己去定义 function __au

克隆对象和自动加载类

//克隆对象//关键字clone(克隆)class Ren{ public $name ="张三"; public function __clone() { $this->name = "李四"; } } $a = new Ren();$b = clone $a; $b->name="李四";echo $b->name; //加载类//include("写类文件的地址")require("写文件地址

自动加载类 (面向对象)----2017-04-20

一.__tostring()方法(了解) 写在类里:必须有返回值 class Ren { public $name; public function __ tostring() { return "该类是人类,name代表姓名"; } } $r = new Ren(); echo $r; 二.__clone()方法(了解) class Ren { public $name="张三"; //第二种修改成员变量值的方法 public function __clone()

spl_autoload_register自动加载类回调函数实现

随手写的,后台发现用不上,放上来以后可能用的着 1 /** 2 * SPL自动加载类 3 */ 4 class AutoLoad 5 { 6 7 /** 8 * 类文件所在目录 9 * 10 * @var string 11 */ 12 protected $dir = ""; 13 14 /** 15 * 类名与目录名映射数组 16 * 17 * @var array 18 */ 19 protected $map = array(); 20 21 /** 22 * 初始化自动加载类