php克隆 自动加载
2016-06-09 11:10
661 查看
PHP加载
include() 函数
include() 函数可获得指定文件中的所有文本,并把文本拷贝到使用 include 函数的文件中。例子 1
假设您拥有一个标准的页眉文件,名为 "header.php"。如需在页面中引用这个页眉文件,请使用 include() 函数,就像这样:<html> <body> <?php include("header.php"); ?> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </html>
例子 2
现在,假设我们有一个在所有页面上使用的标准菜单文件。请看下面这个 "menu.php"<html> <body> <a href="http://www.w3school.com.cn/default.php">Home</a> | <a href="http://www.w3school.com.cn/about.php">About Us</a> | <a href="http://www.w3school.com.cn/contact.php">Contact Us</a>三个文件,"default.php"、"about.php" 以及 "contact.php" 都引用了 "menu.php" 文件。这是 "default.php" 中的代码:
<?php include("menu.php"); ?> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </html>如果您在浏览器中查看 "default.php" 的源代码,应该类似这样:
<html> <body> <a href="default.php">Home</a> | <a href="about.php">About Us</a> | <a href="contact.php">Contact Us</a> <h1>Welcome to my home page</h1> <p>Some text</p> </body> </html>同时,当然,我们也将用相同的方法处理 "about.php" 和 "contact.php"。通过使用引用文件,在您需要重命名链接、更改链接顺序或向站点添加另一张网页时,只要简单地更新 "menu.php" 文件中的文本即可。
require() 函数
require() 函数与 include() 相同,不同的是它对错误的处理方式。include() 函数会生成一个警告(但是脚本会继续执行),而 require() 函数会生成一个致命错误(fatal error)(在错误发生后脚本会停止执行)。如果在您通过 include() 引用文件时发生了错误,会得到类似下面这样的错误消息:PHP 代码:
<html> <body> <?php include("wrongFile.php"); echo "Hello World!"; ?> </body> </html>错误消息:
Warning: include(wrongFile.php) [function.include]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Warning: include() [function.include]: Failed opening 'wrongFile.php' for inclusion (include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5 Hello World!请注意,echo 语句依然被执行了!这是因为警告不会中止脚本的执行。现在,让我们使用 require() 函数运行相同的例子。
PHP 代码:
<html> <body> <?php require("wrongFile.php"); echo "Hello World!"; ?> </body> </html>错误消息:
Warning: require(wrongFile.php) [function.require]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Fatal error: require() [function.require]: Failed opening required 'wrongFile.php' (include_path='.;C:\php5\pear') in C:\home\website\test.php on line 5由于在致命错误发生后终止了脚本的执行,因此 echo 语句不会执行。正因为在文件不存在或被重命名后脚本不会继续执行,因此我们推荐使用 require() 而不是 include()。
自动加载类库文件
当类多了以后,比如要在一个文件中载入3个类库文件:a.class.php,b.class.php,c.class.php要用三个require_once(‘classes/a.class.php);require_once(‘classes/b.class.php);require_once(‘classes/c.class.php);可以用PHP5自动加载的功能来处理:在全局应用配置文件中,定义一个特殊的函数__autoload($class)函数(__autoload并不是一个类的方法,只是单独的函数,和类没有关系):function __autoload($class){require_once(“classes/$class)}该函数放哪没有关系,在创建类实例时,也不必去调用这个autoload函数。PHP会自动完成。但务必注意一点:“在调用页面上创建实例所使用的类名称”、和“被调用的文件名”、以及“该文件中的类的名称”3个必须是一样的。这样就不需要去调用__autoload();如果不一样则必须单独调用
__autoload(‘c’);并给它一个文件名前缀。关于根路径:php里面“/”代表根路径:指该文件所在的磁盘比如:D:/
html里面/代表根路径:指服务器文件夹:www
function __autoload($class_name) { echo '__autload class:', $class_name, '<br />'; } function classLoader($class_name) { echo 'SPL load class:', $class_name, '<br />'; } spl_autoload_register('classLoader'); new Test();//结果:SPL load class:Test语法:bool spl_autoload_register ( [callback $autoload_function] ) 接受两个参数:一个是添加到自动加载栈的函数,另外一个是加载器不能找到这个类时是否抛出异常的标志。第一个参数是可选的,并且默认指向 spl_autoload()函数,这个函数会自动在路径中查找具有小写类名和.php扩展或者.ini扩展名,或者任何注册到 spl_autoload_extensions()函数中的其它扩展名的文件。
include("/wamp/www/0607/Ren.class.php"); include "Ren.class.php"; require("Ren.class.php"); require "Ren.class.php"; require_once("Ren.class.php"); require_once "Ren.class.php";
if(false === spl_autoload_functions()){ if(function_exists('__autoload')){ spl_autoload_registe('__autoload',false); } }spl_autoload_functions()函数会返回已注册函数的一个数组,如果SPL自动加载栈还没有被初始化,它会返回布尔值false。然 后,检查是否有一个名为__autoload()的函数存在,如果存在,可以将它注册为自动加载栈中的第一个函数,从而保留它的功能。之后,可以继续注册 自动加载函数。还可以调用spl_autoload_register()函数以注册一个回调函数,而不是为函数提供一个字符串名称。如提供一个如array('class','method')这样的数组,使得可以使用某个对象的方法。
php复制对象
对象复制
在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同, 但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况: 如果对象A中保存着对象B的引用,当你复制对象A时,你想其中使用的对象不再是对象B而是B的一个副本,那么 你必须得到对象A的一个副本。对象复制可以通过clone关键字来完成(如果对象中存在__clone()方法,会先被调用)。对象中的 __clone()方法不能直接调用。$copy_of_object = clone $object;class Ren{ public $name; public $sex; function __construct($n,$s){ $this->name=$n; $this->sex = $s; } function __clone(){ $this->name = "李四"; //this代表的是复本对象 //$that->name = "lisi"; //that代表原本,后来废弃了 } } //克隆 $r1 = clone $r; 用来复制对象的
php面向对象之__toString()
__toString()是快速获取对象的字符串信息的便捷方式,似乎魔术方法都有一个“自动“的特性,如自动获取,自动打印等,__toString()也不例外,它是在直接输出对象引用时自动调用的方法。__toString()的作用当我们调试程序时,需要知道是否得出正确的数据。比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了toString方法,就能在测试时,echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据。相关文章推荐
- php数据类型转换
- PHP开发运维管理系统笔记
- 用phpmyadmin导入大容量.sql文件
- 路径重写,适用于laravel,yii
- zephir-你的第一个PHP拓展
- zephir-安装和初体验
- phalcon-进阶篇2(拦截器)
- phalcon-进阶篇1(过滤与清理)
- phalcon-入门篇9(view层基础使用)
- phalcon-入门篇8(Model层基础使用2)
- phalcon-入门篇7(Model层基础使用)
- phalcon-入门篇6(控制器)
- phalcon-入门篇4(log日志和session缓存)
- 2016/06/09 ThinkPHP3.2.3使用分页
- 浏览器输入网址从FTP服务上下载文件
- PHP 检测变量是否为空
- Solarium 是 Solr 的 PHP 开发接口,
- tftp下载内核和文件系统
- 怎么用PHP抓取百度排名?
- Ubuntu 安装FTP