`
phinecos
  • 浏览: 343522 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP中的魔术方法

 
阅读更多

PHP中有下列称之为魔术方法(magic method)的函数:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload,本文使用__call为实现一个身份验证的简单实例,代码如下:

代码

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><?php
interfaceAccountable
{
constERR_MSG="error";
publicfunctionisLoggedIn();
publicfunctiongetAccount($user='');
}
abstractclassAuthenticationimplementsAccountable
{
private$account=null;
publicfunctiongetAccount($user='')
{
if($this->account!=null){
return$this->account;
}
else{
returnERR_MSG;
}
}
publicfunctionisLoggedIn()
{
return($this->account!=null);
}
}
classUsers
{
privatestatic$accounts=array('phinecos'=>'phine',
'guest'=>'guest'
);
publicstaticfunctionvalidates($user,$passwd)
{
returnself::$accounts[$user]==$passwd;
}
publicfunction__call($name,array$arguments)
{
if(preg_match("/^validates(.*)$/",$name,$matches)&&count($arguments)>0){
returnself::validates($matches[1],$arguments[0]);
}
}
}
classMyAuthextendsAuthentication
{
private$users;
publicfunction__construct()
{
$this->users=newUsers();
}
publicfunctionlogin($user,$passwd)
{
if(empty($user)||empty($passwd))returnfalse;
$firstValidation=Users::validates($user,$passwd);
$userFunction='validates'.$user;
$secondValidation=$this->users->$userFunction($passwd);
return($firstValidation&&$secondValidation);
}
}
functionmain()
{
$authenticator=newMyAuth();
$user='phinecos';
$pwd='phine';
$isValid=$authenticator->login($user,$pwd);
if($isValid){
echo'validuser';
}
else{
echo'invaliduser';
}
}
main();
?>

分享到:
评论

相关推荐

    PHP 魔术方法整理

    魔术方法:魔术函数是PHP中内置的语言特性,当程序执行到某种情况时,如果定义了这些魔术函数 (php手册中称之为“Overloading”),则PHP会调用他们,同时也会传入相应的参数,可以认为是PHP执行过程中的钩子函数

    16种魔术方法

    php 概念性知识,全面的魔术方法,不用再找,收藏直接看

    php中的常用魔术方法汇总

    这篇文章详细的对php中的常用魔术方法进行了整理归纳,分享给大家供大家参考,具体内容如下 1、PHP把所有”__”开头的方法当做魔术方法,所以任何自定义的方法都不能是”__”开头 php提供的重载,是指动态的创建属性...

    PHP中的常见魔术方法功能作用及用法实例

    在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利。PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发。这篇文章简单总结了PHP中提供的魔术...

    PHP之十六个魔术方法详细介绍

    PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不...

    php 魔术函数和常量一览表

    php 魔术函数和常量一览表

    基于PHP5魔术常量与魔术方法的详解

    魔术常量:1。__LINE__返回文件中的当前行号。2。__FILE__ 返回文件的完整路径和文件名。如果用在包含文件中,则返回包含文件名。自PHP4.0.2 起,__FILE__总是包含一个绝对路径,而在此之前的版本有时会包含一个...

    php 魔术方法使用说明

    一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应用中,我们都需要用到他们!!1.__construct() 当实例化一个对象的时候,这个对象的这个方法首先被调用。 Java代码 class Test { function __construct...

    魔术贴网站源码PHP源码.zip

    魔术贴网站源码PHP源码.zip

    php中的常用魔术方法总结

    常用的魔术方法有:__Tostring () __Call() __autoLoad() __ clone() __GET() __SET() __isset() __unset() 1.__Tostring() 用于定义输出对象引用时调用 常用于打印一些对象的信息 必须有返回值eg:有一个...

    计算机后端-PHP视频教程. php之面向对象20 魔术方法的意义.wmv

    计算机后端-PHP视频教程. php之面向对象20 魔术方法的意义.wmv

    PHP 预定义变量、魔术常量和魔术方法功能与用法小结

    本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下: PHP 预定义了一些变量、常量、方法,使用起来很方便,例如直接使用 __DIR__ 获取当前文件所在的目录。 下面分别详细介绍一下 PHP...

    php魔术方法与魔术变量、内置方法与内置变量的深入分析

    本篇文章是对php魔术方法与魔术变量、内置方法与内置变量进行了详细的分析介绍,需要的朋友参考下

    php 魔术方法详解

    从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。PHP 将所有以 _ _(两个下划线)开头的...

    php代码-魔术方法php

    php代码-魔术方法php

    PHP魔术方法使用方法汇总

    魔术方法是PHP面向对象中特有的特性。它们在特定的情况下被触发,都是以双下划线开头,你可以把它们理解为钩子,利用模式方法可以轻松实现PHP面向对象中重载(Overloading即动态创建类属性和方法)。魔术方法很多...

    深入PHP5中的魔术方法详解

    从PHP 5以后的版本,PHP中的类就可以使用魔术方法了。其规定以两个下划线(__)开头的方法都保留为魔术方法,所以建议大家函数名最好不用__开头,除非是为了重载已有的魔术方法。 1、__get、__set这两个方法是为在类和...

    PHP魔术常量及魔术函数.doc

    常用的php魔术常量和魔术函数,有时候使用魔术函数挺方便的。

Global site tag (gtag.js) - Google Analytics