摘要:写在最前面最近想写一个简单的关于权限处理的东西,之前我也了解过用二进制数的位运算可以出色地完成这个任务。关于二进制数的位运算,常见的就是“或、与、非”这三种简单运算了,当然,我也查看了下PHP手册,还有“异或、左移、右移”这三个运算。记得上初中时数学老师就开始唠叨个不停了,在此我也不想对此运算再作额外的说明,直接进入正题。如何定义权限将权限按照2的N次方来定义值,依次类推。为什么要这样子定义呐?这样子定义保证了每个权限值(二进制)中只有一个1,而它恰好对应一种权限。比如:define('ADD', 1); // 增加权限define('UPD', 2); //
阅读全文
摘要:单例模式所谓单例模式,也就是在任何时候,应用程序中只会有这个类的一个实例存在。常见的,我们用到单例模式只让一个对象去访问数据库,从而防止打开多个数据库连接。要实现一个单例类应包括以下几点:和普通类不同,单例类不能被直接实例化,只能是由自身实例化。因此,要获得这样的限制效果,构造函数必须标记为private。要让单例类不被直接实例化而能起到作用,就必须为其提供这样的一个实例。因此,就必须要让单例类拥有一个能保存类的实例的私有静态成员变量和对应的一个能访问到实例的公共静态方法。在PHP中,为防止对单例类对象的克隆来打破单例类的上述实现形式,通常还为基提供一个空的私有__clone()方法。下面是一
阅读全文
摘要:抽象类是使用abstract关键字声明的类。要将类中某个方法声明为抽象方法,只需要省略掉包含所有大括号的方法实现体,将方法声明的代码行用分号结束即可。简单地说,当我们在创建一个基础对象的时候,其中所需的某些方法暂时并没有完整地定义出来,我们就可以用到抽象类。而后将方法中的细节推迟到继承者来实现。比如定义一个 动物类,动物有 吃东西 这一方法,而每种动物吃东西的方式又不同,比如牛吃草,老虎吃肉。因此我们就可以将动物类定义为一个抽象类。当然抽象类中也可以包括完整实现的方法,而不单单只有抽象方法,另外抽象类不能被实例化。abstract class Food { public $name; ...
阅读全文
摘要:这是一个简单的、使用PHP语言实现的、采用PDO连接的方式的mysql数据库操作类,主要用于连接mysql数据库和进行sql语句操作(包括常用到的增、删、改、查,另外也可以执行DDL语句)。首先是一个mysql数据库的配置文件 config.ini,其中只是简单的包括了PDO连接方式的配置信息(数据源、用户名和密码):[pdo]db_source = "mysql:host=localhost;dbname=test"db_user = rootdb_password = 123下面就是这个完整的数据库操作类(上面的配置文件和下面的数据库操作类文件在同一目录结构下):<
阅读全文
摘要:重新格式化文件大小的数据// 重新格式化数据function formatFileSize($bytes){ $size = 0; while($bytes > 0){ if( $bytes >= pow(2, 40) ){ $ret[] = array( 'value' => floor($bytes/pow(1024, 4)), 'suffix' => 'T' ); $bytes = $bytes%pow(1024, 4); ...
阅读全文
摘要:文件类型 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 4 <head> 5 <meta http-equiv=
阅读全文