PHP中有下列称之为魔术方法(magic method)的函数:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload,本文使用__call为实现一个身份验证的简单实例,代码如下:
代码
复制代码
<?php
interface Accountable
{
const ERR_MSG = "error";
public function isLoggedIn();
public function getAccount($user = '');
}
abstract class Authentication implements Accountable
{
private $account = null;
public function getAccount($user = '')
{
if ($this->account != null) {
return $this->account;
} else {
return ERR_MSG;
}
}
public function isLoggedIn()
{
return ($this->account != null);
}
}
class Users
{
private static $accounts = array('phinecos' => 'phine',
'guest' => 'guest'
);
public static function validates($user, $passwd)
{
return self::$accounts[$user] == $passwd;
}
public function __call($name, array $arguments)
{
if (preg_match("/^validates(.*)$/", $name, $matches) && count($arguments) > 0) {
return self::validates($matches[1], $arguments[0]);
}
}
}
class MyAuth extends Authentication
{
private $users;
public function __construct()
{
$this->users = new Users();
}
public function login($user, $passwd)
{
if (empty($user) || empty($passwd)) return false;
$firstValidation = Users::validates($user, $passwd);
$userFunction = 'validates'.$user;
$secondValidation = $this->users->$userFunction($passwd);
return ($firstValidation && $secondValidation);
}
}
function main()
{
$authenticator = new MyAuth();
$user = 'phinecos';
$pwd = 'phine';
$isValid = $authenticator->login($user, $pwd);
if ($isValid) {
echo 'valid user';
} else {
echo 'invalid user';
}
}
main();
?>
复制代码
本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2010/04/19/1715659.html,如需转载请自行联系原作者
微信关注我们
原文链接:https://yq.aliyun.com/articles/336341
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
相关文章
发表评论
资源下载
更多资源Mario
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
Apache Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。