- 浏览: 610155 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kangh:
转载的也拿出来 都不试一下 完全错误
Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解 -
wangtxlz:
#cd builders/cmake#cmake .系统提示命 ...
crtmpserver流媒体服务器的介绍与搭建 -
hnraysir:
支持支持支持
手机Android音视频采集与直播推送,实现单兵、移动监控类应用 -
wuent:
把web服务器和php框架绑定到一起?真不建议这样。。。
Swoole(PHP高级Web开发框架) -
wuent:
有更详细的性能比较吗?php,python,java
PHP中的(伪)多线程与多进程
从php5以后的版本,php的类就可以使用魔术方法了。
- <?php
- class Loader
- {
- static function autoload_class($class_name)
- {
- //寻找正确的$class_name类,并引入,没有则抛出异常
- }
- }
- /**
- * 设置对象的自动载入
- * spl_autoload_register — Register given function as __autoload() implementation
- */
- spl_autoload_register(array('Loader', 'autoload_class'));
- $a = new Test();//Test没用require就实例化,实现自动加载,很多框架就用这种方法自动加载类
- ?>
PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以 __为前缀。
1、__construct()
当实例化一个对象的时候,这个对象的构造方法将首先被调用;
我们知道php5对象模型和类名相同的函数是类的构造函数,那么如果同时定义构造函数和__construc()方法的话,php5会默认调用__contruct()而不会调用同类名函数,所以__contruct()作为类的默认构造函数;
2、__destruct()
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
3、__get(string $name)
当试图读取一个并不存在的属性时被调用;如果试图读取一个对象并不存在的属性的时候,php就会给出错误的信息。如果在类里添加__get方法,并且我们可以用这个函数实现类似java中的反射的各种操作。
4、__set(string $name, mixed $value)
给未定义的变量赋值时将被调用
5、__call(string $name, array $arguments)
当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。
__callStatic(string $name, array $arguments)
当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时,__callStatic() 会被调用。
6、__toString()
当打印一个对象的时候被调用,这个方法类似于java的toString方法,当我们直接打印对象的时候回调这个函数。
7、__clone()
当对象被克隆时调用。
8、__sleep()
serialize()函数会检查是否存在一个魔术方法 __sleep.如果存在,__sleep()方法会先被调用, 然后才执行序列化操作。这个功能可以用于清理对象,并返回一个包含对象中所有变量名称的数组。如果该方法不返回任何内容,则NULL被序列化,导致 一个E_NOTICE错误。__sleep方法常用于提交未提交的数据,或类似的操作。同时,如果你有一些很大的对象,不需要保存,这个功能就很好用。
9、__wakeup()
与__sleep() 相反,unserialize()会检查是否存在一个__wakeup方法。如果存在,则会先调用 __wakeup方法,预先准备对象数据。 __wakeup经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
10、__isset()
当对未定义的变量调用isset() 或 empty()时,__isset() 会被调用。
11、__unset()
unset一个对象的属性时被调用。如:unset($c->name)。
12、__set_state()
调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
13、__autoload()
实例化一个对象时,如果对应的类不存在,则该方法被调用。简单的说就是类的自动加载;当你尝试使用一个PHP没有组织到的类, 它会寻找一个__autoload的全局函数. 如果存在这个函数,PHP会用一个参数来调用它,参数即类的名称。
14、__invoke()
当尝试以调用函数的方式调用一个对象时,__invoke 方法会被自动调用。
魔术常量:
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(大小写敏感)。这个常量是在编译时定义的(PHP 5.3.0 新增)
发表评论
-
nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket
2015-04-02 11:14 1472前几天看到一篇博客,提到php所在服务器在大并发情况下,频 ... -
使用socket方式连接Nginx优化php-fpm性能
2015-04-01 13:49 0Nginx连接fastcgi的方式有 ... -
PHP中include和require的区别详解
2015-04-01 08:32 01、概要 require()语句的性能与includ ... -
PHP 中cookie 和 session 的分析
2015-03-31 12:33 0HP 中cookie 和session 的分析 ... -
php 经典的算法题你懂的
2015-03-31 12:31 0有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来, ... -
PHP最常用的2种设计模式工厂模式和单例模式介绍
2015-03-31 12:26 0简单来说,PHP单例模式就是一个功能用一个类来实现,并且在整 ... -
PHP 数据类型
2015-03-31 12:23 0PHP 数据类型 PHP 支持八种原始类型(type)。 ... -
PHP mcrypt启用、加密以及解密过程详解
2015-03-30 11:32 1463Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密, ... -
PHP扩展实现类扩展
2015-03-27 14:08 580在第一篇文章中,我们所开发的扩展是单个函数,本篇文章看一下 ... -
PHP高级工程师的面试题
2015-03-06 10:35 01. 基本知识点 HTTP协议中几个状态码的含义:1x ... -
PHP面试中常见的面试试题与算法例子
2015-03-05 14:14 0下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操 ... -
PHP实现四种常用的排序算法
2015-03-05 14:09 0插入排序(Insertion Sort),选择排序(Sele ... -
用swagger-php/ui做API测试
2015-02-13 09:46 3652功能: 1 swagger-php根据自定义的规则生成API ... -
app后端设计(0)--总目录
2015-01-23 18:03 0做了3年app相关的系统架构,api设计,先后在3个创业公司中 ... -
PHP中eAccelerator、memcached、xcache、APC 4个加速、缓存扩展的区别
2015-01-23 10:26 919这篇文章主要介绍了PHP ... -
PHP内核探索:zend_parse_parameters函数
2015-01-16 14:14 969最简单的获取函数调用者传递过来的参数便是使用zend_pars ... -
实战:用C写php扩展(二)
2015-01-16 11:05 1000一、前言 在我的上一篇文章“实战:用C写php扩展(一)”里介 ... -
实战:用C写php扩展(一)
2015-01-16 11:04 10191、 前言 首先,确保你的机器安装了apache和php。假 ... -
JavaScript or PHP 来检测移动设备
2014-09-22 10:04 634iPhone & iPod Detection T ... -
YII Framework学习教程-YII的Modules(模块化)
2014-08-27 11:04 756一个相对来说大的项目。如果按照yii生成的 ...
相关推荐
在PHP编程语言中,魔术方法是一组特殊命名的函数,它们在特定的上下文中自动调用,用于增强类的行为和属性处理。以下是PHP中的一些重要魔术方法及其详细解释: 1. **__construct()**: 构造函数在创建新对象时自动...
PHP魔术方法是面向对象编程中的特殊方法,它们在特定的时机被PHP自动调用。这些方法对PHP开发者来说非常有用,尤其是在需要对对象的行为进行额外控制时。下面是PHP魔术方法的详细解释和使用示例。 1. __construct和...
3. PHP中的魔术方法(__construct、__destruct等)作用是什么? 4. 魔术方法__call和__callStatic的用途是什么? 八、PHP与数据库交互 1. mysqli和PDO是PHP的两种数据库连接方式,它们的区别在哪里? 2. SQL注入是...
在PHP中,可以使用`__clone`魔术方法实现对象的克隆。 7. 简单工厂模式:一个静态方法负责创建对象,客户只需要知道对象的类型,而无需知道如何创建。在PHP中,常用于创建简单的对象,如创建数据库连接对象。 8. ...
2. **魔术方法**: PHP中的魔术方法如`__construct`, `__destruct`, `__call`, `__callStatic`等,可以在特定场景下自动执行,比如对象创建、方法调用等,为代码提供了更多的元编程能力。 3. **类型声明**: 自PHP 7...
#### 七、PHP魔术方法与魔术变量 1. **魔术方法**:PHP中提供了一些特殊的方法,它们的名称以两个下划线(`__`)开头,这些方法可以在特定的情况下自动调用。 - **`__construct()`**:构造函数,在对象创建时自动...
11. **魔术方法(Magic Methods)** - PHP提供了一系列以`__`开头的特殊方法,如`__construct`, `__destruct`, `__get`, `__set`等,它们在特定情况下自动调用。 12. **命名空间(Namespace)** - 命名空间用于...
### PHP常用函数总汇 #### 变量处理 在PHP中,变量的处理非常重要,能够直接影响到程序的逻辑和性能。 - **`isset()`**:用于判断变量是否存在且不为`null`。如果变量存在且非`null`,则返回`true`;否则返回`...
### PHP面试宝典100题汇总知识点解析 #### 1. Http与Https的区别 - **安全性**: HTTP采用明文传输,数据容易被截获;HTTPS则是基于SSL/TLS的安全协议,提供加密传输,保障了数据的安全性。 - **连接方式与端口**: ...
本文将详细介绍两种方法来获取当前文件的父目录,并列出一些常用的PHP函数,帮助开发者更有效地处理路径和目录。 ### 方法一 首先,我们可以使用`dirname()`函数配合`__FILE__`魔术常量来获取当前文件的父目录。`__...
- PHP魔术方法:如__construct, __destruct, __get, __set等。 6. **PHP与数据库交互** - PDO和MySQLi:对比这两种不同的数据库连接方式,理解预处理语句。 - SQL查询:掌握基本的SELECT, INSERT, UPDATE, ...
书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华) PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。 全书压缩打包成2部分,这是第1部分。 注:本系列图书的第I、II卷再版时均相应改名...
书名:《PHP开发实战1200例(第I卷)》(清华大学出版社.潘凯华.刘中华) PDF格式扫描版,全书分为5篇15章,共899页。2011年1月出版。 全书压缩打包成2部分,这是第2部分。 注:本系列图书的第I、II卷再版时均相应改名...
8. **PHP魔术方法**:如__construct、__destruct、__get、__set、__call等,它们在特定条件下自动调用,能帮助提升代码的灵活性和可维护性。 9. **命名空间**:用于组织代码,避免全局命名冲突,了解如何导入和使用...
标题中提到的“PHP面试荟萃”指的是对PHP程序员在面试中可能遇到的各类问题的汇总。描述中强调了这本合集包含了详细的答案和清晰的知识点,对面试准备很有帮助。标签“PHp面试荟萃”直接体现了这一主题。以下将结合...
5. `set_magic_quotes_runtime()` 和 `magic_quotes_runtime()`:魔术引号功能在PHP 5.3中被废弃,建议使用预处理语句或手动转义输入数据。 6. `session_register()`,`session_unregister()` 和 `session_is_...