PHP最简单的MVC框架Punny简单的介绍及进度
我这几天很少更新日志.大家估计都纳闷了.我是不是过年乐呵去了.
其实没有.我这个菜鸟突然冒出个想法,就是写个简单的PHP框架.
这个框架的名字暂时定为:Punny
Punny意为PHP Bunny
Bunny意思为敏捷的兔子.所以我的框架最大的优点就是简单.迅速.不从主观限制程序员.给程序员更多的自由发挥空间.
现在的框架大都非常复杂.光是学习就要费不少时间.我的宗旨就是做个简单的不能再简单的MVC框架
因为复杂的我也写不出来啊…
先来一张图片看看我暂时的工作进度.

北京新鸿儒世纪网络技术有限公司破解的common.php
单位的网站是别人做的..我做后期维护和功能增加与完善.但是他们公司给的代码中关键代码是加密的.
害我费劲了半天终于破解了出来.已经可以正常运行.在我测试已经没什么问题.
注意:本代码只做研究用途.严禁非法恶心的泄露.本人只是破解修改代码.与代码无任何关系.也不负任何责任.
jQuery 1.3 Packed
JQuery在三岁生日的时候发布了1.3版本,但是这次版本目前还没有提供packed的版本。
所以我就自己packed了,给需要的人。
打包之后是37.1 KB (38,078 字节)
魔术方法学习笔记之动态类
大家等我教程等着急了吧?这几天事情比较多。
看到很多人看完上面的笔记还是有很多人不明白,不清楚,或者说有疑问的地发。不要着急,我今天绝对打消您的疑问。您瞧好吧。
今天我们利用前几天学习的知识,学习如何写一个动态类,其实是就是一个具有柔韧性的类。
什么是一个具有柔韧性的类?其实我也说不清楚,有的人更愿意称之为可以弯曲的类,因为这个类可以随你的意愿进行有特点的伸展。
我们上次提到了__set()这个魔术方法,又提到了,其实魔术方法之所以称之为魔术方法是由于我们不用主动去触发这个方法它就会自动的运行。
有的人会问了,在学习__set()的时候,我们是主动去调用它的啊。跟别的,比如__isset()方法有些不一样。其实在真正的运用中,__set()的使用方法不是上面那样的,请允许我为这篇文章埋下一个伏笔。今天我们就来学习__set()的最神奇的地方。
一个柔韧性的类的一个重要的特征应该就是属性具有柔韧度。如何制作一个具有伸缩属性的类?看下面的例子。
- <?php
- class Test {
- private $array; //PHP数组就是具有伸缩性的这个特性
- public function __set($key, $value) { //__set()魔术方法,设置$array的值。
- $this->array[$key] = $value;
- }
- public function get() {
- print_r($this->array);
- }
- }
- $test = new Test();
- $test->a = 'a'; //这样系统就会自动调用__set()这个魔术方法
- $test->b = 'b'; //这样下去,我们就可以设置无数个属性。
- $test->c = 'c'; //你还可以设置$test->d 。没有人拦着你,谁拦你我拦他!
- $test->get(); //输出 Array ( [a] => a [b] => b [c] => c )
- ?>
这只是个简单的例子,如果你要限制一些属性,该如何设置呢?还记得前面的课程吗?
PHPIni解析类 Beta – PHP修改删除增加配置文件
本类具有以下优点:
1.实现了与win编程下几乎相同的ini文件操作
2.安全性高,与平时使用的php的数组存取方式一样。不会被下载。
3.以前的config.php都得手工手改。本类实现了对ini文件的读取修改删除等操作。
4.可以使用Section或非Section方式。Section就是对每个属性设计一个块。具体可以参看后面的例子。
5.程序注释清晰易懂,你可以任意修改,例子的说明非常详细。
注:这是个测试版本,可能存在BUG,欢迎大家测试寻找错误。有问题可以留言。
下面是例子和程序,最下面有打包下载。
使用例子:
- <?php
- /**
- * PHPIni解析类详细例子
- */
- require_once('PHPIni.class.php');
- //------------基础用法(不带Section)--------------
- $ini = new PHPIni('config1.ini.php', false); //文件必须为PHP结尾.保证安全性 如果文件不存在就创建
- //以非Section方式打开.也就是忽略Section的存在
- $ini->setKey('key1', 'value1'); //设置key
- $ini->setKey('key2', 'value2');
- $ini->saveIniFile(); //设置完要保存ini文件.这步很重要
- print_r($ini->getIniArr()); //打印出解析ini文件得到的数组
- //这时候你可以打开config1.ini.php看下设置是什么样的,然后执行下面的语句
- $ini->setKey('key1', '我是可以key1'); //更改key1的值
- $ini->delKey('key2'); //删除key2
- $ini->saveIniFile(); //保存文件
- print_r($ini->getIniArr()); //打印出解析ini文件得到的数组
- unset($ini);
- //------------end 基础用法(不带Section)--------------
- //------------中级用法(带Section)------------------
- $ini = new PHPIni('config2.ini.php'); //使用默认方式(Section方式)打开文件
- //注:在Section模式下.每个键值都必须依附于一个Section.
- $ini->addSection('section1'); //如果一个Section都没有就必须设置一个
- $ini->setKey('key1', 'value1', 'section1'); //为Section1设置一个值
- $ini->addSection('section2', array('key1' => 'value1')); //直接为Section设置值 和上面的效果相同
- $ini->setKey('key2', 'value2'); //Section为空.就在最后一个Section后增加值.当前就是在Section2后加入
- $ini->saveIniFile(); //保存文件
- print_r($ini->getIniArr()); //打印出解析ini文件得到的数组
- $ini->delSection('section1'); //删除Section 注意下面的所有键值都会被删除
- $ini->saveIniFile(); //保存文件
- print_r($ini->getIniArr()); //打印出解析ini文件得到的数组
- unset($ini);
- //------------end 中级用法(带Section)------------------
- //------------高级用法(通过数组设置ini)------------------
- $ini = new PHPIni('config3.ini.php');
- $iniArr = array(
- 'section1' => array(
- 'key1' => 'value1',
- 'key2' => 'value2',
- ),
- 'section2' => array(
- 'key1' => 'value1',
- 'key2' => 'value2',
- ),
- );
- $ini->setIniArr($iniArr);
- $ini->saveIniFile(); //把数组保存到Ini文件
- //下面的方法也可以
- $ini->setIniFile($iniArr); //这个方法也可以.跟上面两句话等价.
- //------------end 高级用法(通过数组设置ini)------------------
支持换肤简单的MP3播放器 – AudioPlayer修改版
点击放大.演示地址http://www.skiyo.cn/Demo/AudioPlayer/
- 去除自带的广告
- 加入皮肤功能,在skin文件夹下你可以为自己制作皮肤,修改config.xml文件即可。其中有详细说明。
- 去除设置背景功能,直接设置为透明
- 加入右键,带上了我的网站:)如果你不喜欢可以去修改源码(文件夹中包含源码)。
- 我自己制作了一套皮肤,当前的默认皮肤就为此。
- 演示地址:http://www.skiyo.cn/Demo/AudioPlayer/
- 如转载请注明出处:http://www.skiyo.cn。
PHP类中的魔术方法笔记之__call()等
昨天答辩实在曲折,到现在还没有开始,废话不说了,感觉继续奉上教程笔记。
今天我们要说的是__call() 和其他一些不常用的魔术方法,我也许只会点到一下,如果你想搞的非常透彻还需要自己下功夫。
__call() 是个非常重要的魔术方法,可以说非常非常的重要。至于为什么,相信你学习完今天的笔记就会明白了。
当我们实例化一个类的对象后,调用类中的一个方法,比如$test->fun();。系统就会从这个类中去找fun()这个方法,如果找到了就去执行它,如果没有找到就去调用 __call()。
我们来看下例子:
- <?php
- class Test {
- public function __call($fun, $args) { //第一次参数是方法名,第二个参数是传过来的参数,是以数组的方式传过来的。
- echo "你在调用".$fun."方法";
- print_r($args);
- }
- }
- $test = new Test();
- $test->fun("a","b"); //调用一个不存在的方法 参数是a和b .
- //输出 你在调用test方法Array ( [0] => a [1] => b )
- ?>
从上面的例子,我们可以清晰的分析出__call()方法的执行过程。但是我们想,如果类中存在一个同名的private方法,PHP会如何处理呢?我们来看下面的例子。
- <?php
- class Test {
- public function __call($fun, $args) {
- echo "你在调用".$fun."方法";
- print_r($args);
- }
- private function fun($a, $b) {
- echo "你再调用类中的private方法";
- }
- }
- $test = new Test();
- $test->fun("a","b"); //调用类中存在的private方法
- //输出 Fatal error: Call to private method Test::fun() from context '' in PHPDocument3 on line 14
- ?>
结果输出了错误,看来这种时候,魔术方法也不起作用。系统直接报错了。
现在我们再来想,如果调用本类中不存在的方法,而父类中存在的方法,是先调用本类的__call()呢还是先调用父类中存在的方法呢?我们继续来做实验。
分类目录
- ActionScript (2)
- CSS (25)
- Java (3)
- JavaScript (41)
- PHP (105)
- 心情杂谈 (34)
- 收集整理 (77)
- 本站原创 (55)
最近文章
- 将google ssl设置为IE8的默认搜索引擎..
- 我们来做一个会呼吸的菜单吧!!
- 在编译php-fpm0.6的时候需要注意的一些问题
- 使用PHP将大文件导入到数据库中..
- 关于用PHP调用WebService中参数为complexType的问题
- 神奇的两次按位非运算符
- 百路推免费短网址服务..首创”收藏夹获取短网址”..
- 哥学社正式上线..
- jQuery中getJSON跨域原理详解
- Web辅助工具条(原名:河蟹工具条CrabBar)0.1发布
- 腾讯微博PC端发图教程
- goo.gl URL Shortener for WordPress
- PHP上传进度条深度解析
- Google短网址(goo.gl)服务类
- TinyURL.class.php
最近评论
- 匿名 在 一个PHP+AJAX留言板的完整例子.非常简单! 上的评论
- pfeng 在 将google ssl设置为IE8的默认搜索引擎.. 上的评论
- pfeng 在 将google ssl设置为IE8的默认搜索引擎.. 上的评论
- 北戴河旅游住宿 在 PHPer的历练 上的评论
- konakona 在 将google ssl设置为IE8的默认搜索引擎.. 上的评论
- 宁静致远 在 PHPer的历练 上的评论
- Corsair_Boss 在 强人作品 – jQuery1.2.6源码分析 上的评论
- fanglor 在 PHPer的历练 上的评论
- fanglor 在 百路推免费短网址服务..首创”收藏夹获取短网址”.. 上的评论
- 匿名 在 Web辅助工具条(原名:河蟹工具条CrabBar)0.1发布 上的评论
文章索引模板
- 2010年七月 (3)
- 2010年六月 (4)
- 2010年五月 (2)
- 2010年四月 (9)
- 2010年三月 (12)
- 2010年二月 (1)
- 2010年一月 (3)
- 2009年十二月 (2)
- 2009年十一月 (3)
- 2009年十月 (3)
- 2009年九月 (5)
- 2009年八月 (4)
- 2009年七月 (6)
- 2009年六月 (8)
- 2009年五月 (8)
- 2009年四月 (16)
- 2009年三月 (19)
- 2009年二月 (22)
- 2009年一月 (20)
- 2008年十二月 (38)
- 2008年十一月 (22)
- 2008年十月 (7)
- 2008年九月 (3)
- 2008年八月 (24)

Jessica



