魔兽争霸之PHP设计模式
前言:我写的关于设计模式的一系列文章。这系列的文章主要针对没接触过设计模式的,或者说接触过但还不是很明白的PHPer。
问题的提出:
可能很多人都写过类,文件操作的,数据库的……
对于数据库的类来说有时候可能被忽略的一个问题是:我们创建类的实例时一般都是通过构造函数连接了数据库。这没错。但是如果我们不注意地创建了多个实例,那么对于数据库资源而言是一种浪费。所以使用单件模式在解决这个问题上就显得很有必要了。
单件模式的作用:
从上面可以看出,单件模式的引入是为了使类的实例只有一个。
那么下面开始我们的类的设计。这里就不以数据库为例子了。从标题可以很明显看出,我这个系列的文章都是以魔兽争霸为例子的。
想玩游戏,那么先打开应用程序WarThree:
/*
*创建一个魔兽争霸3的应用程序类
*/
class WarThree
{
public function __construct()
{
echo 'Open war3.exe
';
}
}
$war = new WarThree();
//这样貌似没什么问题。但如果你不小心打开了2个魔兽争霸呢?
//尝试下面语句
$war_again = new WarThree();
echo ($war !== $war_again) ? 'Error:War3.exe is already running' : 'Have a good time in the game';
?>
相信你已经知道了上面代码存在的问题了。
那么,如果我们对类的实例化这一过程进行控制,也就是说不给用户随便打开游戏,我们要在打开之前进行控制。
试试下面代码:
/*
*创建一个魔兽争霸3的应用程序类
*防止在外部无限打开程序
*/
class WarThree
{
//把构造函数改为private的,看你怎么创建我?呵呵
private function __construct()
{
echo 'Open war3.exe
';
}
}
$war = new WarThree();//这时尝试创建对象会发生错误。
?>
总不能不让人玩游戏吧,那干脆卸载算了!
别激动,改下就能玩了嘛,真是的。
/*
*创建一个魔兽争霸3的应用程序类
*总算可以打开了
*/
class WarThree
{
//把构造函数改为private的,看你怎么创建我?呵呵
private function __construct()
{
echo 'Open war3.exe
';
}
public static function OpenWar()
{
new WarThree();
}
}
$war = new WarThree();//我打开。咦还不行
$war = WarThree::OpenWar();//楼上的,你这不废话吗。我还是private的。不过通过Op
相关文档:
PHP Security for Deployers
If you're a Developer
READ THIS and then work with your SysAdmins to step through any and all the layers of security designed to protect your apps.
Example:
Traffic must first pass through a SPI firewall (ensure that ONLY necessary ports/protocols are permitted; en ......
PHPDocument是从你的源代码的注释中生成文档,因此在给你的程序做注释的过程,也就是你编制文档的过程。
从这一点上讲,PHPdoc促使你要养成良好的编程习惯,尽量使用规范,清晰文字为你的程序做注释,同时多多少少也避免了事后编制文档和文档的更新不同步的一些问题。
在phpdocumentor中,注释分为文档性注 ......
目前有不少AMP(Apache\MySQL\PHP)的集成软件,可以让我们一次安装并设置好。这对于不熟悉AMP的用户来说,好处多多。
一、使用AMP集成软件的优点:
1、可避免由于缺乏AMP的知识,而无法正确设置环境;
2、可快速安装并设置好AMP环境,让我们直接开始真正感兴趣的软件,如xoops;
3、可方便的搭建测试环境,对于� ......
PHP核心开发者Andrei Zmievski在最近举行的2009 Zend/PHP会议的主题发言中提出:“在接下来的PHP6重要升级中,将通过支持Unicode来帮助开发者们写出能够部署到多个不同语言市场的应用程序。”
商业开发中如果只是开发为特语言市场的应用程序,就会失去其他地方的商业机会。早在2006年4月,Andrei Zmievs ......
问题描述:一个连接远程数据库的PHP脚本testdb.php,在浏览器中运行:http://localhost/testdb.php,出现错误:Can't connect to MySQL server on '10.60.56.220' (13),但是在本地用php命令行运行:php testdb.php,却正常地连上了数据库并读出了其中的数据。
应用程序环境:本地IP:10.60.56.90,本地电脑上安装Apache 2 ......