Submitted by gouki on 2009, October 21, 5:17 PM
纯COPY,没仔细看。。。。【先申明,我COPY对这段代码,主要是看他reflectionClass的应用,并非关注插件的应用。。。】
有爱好的人,可以学习一下。。
http://www.e897.com/Article/wlbc/php/200908/5377.html
-
-
-
-
- interface Iplugin{
- public static function getName();
- }
- function findPlugins(){
- $plugins = array();
- foreach (get_declared_classes() as $class){
- $reflectionClass = new ReflectionClass($class);
- if ($reflectionClass->implementsInterface('Iplugin')) {
- $plugins[] = $reflectionClass;
- }
- }
- return $plugins;
- }
- function computeMenu(){
- $menu = array();
- foreach (findPlugins() as $plugin){
- if ($plugin->hasMethod('getMenuItems')) {
- $reflectionMethod = $plugin->getMethod('getMenuItems');
- if ($reflectionMethod->isStatic()) {
- $items = $reflectionMethod->invoke(null);
- } else {
- $pluginInstance = $plugin->newInstance();
- $items = $reflectionMethod->invoke($pluginInstance);
- }
- $menu = array_merge($menu,$items);
- }
- }
- return $menu;
- }
- function computeArticles(){
- $articles = array();
- foreach (findPlugins() as $plugin){
- if ($plugin->hasMethod('getArticles')) {
- $reflectionMethod = $plugin->getMethod('getArticles');
- if ($reflectionMethod->isStatic()) {
- $items = $reflectionMethod->invoke(null);
- } else {
- $pluginInstance = $plugin->newInstance();
- $items = $reflectionMethod->invoke($pluginInstance);
- }
- $articles = array_merge($articles,$items);
- }
- }
- return $articles;
- }
- require_once('plugin.php');
- $menu = computeMenu();
- $articles = computeArticles();
- print_r($menu);
- print_r($articles);
-
-
-
- <?php
- class MycoolPugin implements Iplugin {
- public static function getName(){
- return 'MycoolPlugin';
- }
- public static function getMenuItems(){
- return array(array('description'=>'MycoolPlugin','link'=>'/MyCoolPlugin'));
- }
- public static function getArticles(){
- return array(array('path'=>'/MycoolPlugin','title'=>'This is a really cool article','text'=>xxxxxxxxx));
- }
- }
Tags: 反射, 插件
PHP | 评论:5
| 阅读:27622
Submitted by gouki on 2009, October 18, 9:34 PM
这个玩意,可以做网页的人必看手册啊。。。虽然我没有看过,但我还是留了一个备份。天知道我什么时候就会用到这玩意?
新闻来源:tutorialfeed.blogspot.com
现代 Web 设计与开发越来越看重浏览器兼容问题,IE 每个新版本的推出,都在 CSS 的标准化方面前进一大步,同时,也就不可避免地在 IE 的各个主要版本之间产生兼容问题,尽管 IE8 推出已有时日,使用 IE6的用户仍然相当可观。本文以速查手册的形式介绍 CSS (2.1 和 3)在 IE6,7,8 三个版本之间的兼容情况。
这套速查手册可以打印成 A3 尺寸,共2页,以下是各种不同格式下载:
本文来源:http://tutorialfeed.blogspot.com/2009/10/visual-cheat-sheet-css-compatiblity.html
翻译整理:COMSHARP CMS 企业网站内容管理系统官方网站
【由于以上内容下载需要google帐号,因此我这里做了本地备份,可以给那些没有google帐号的朋友提供方便】
1、两张GIF文件
2、两个PDF文件
cheatsheet-page1.pdf
cheatsheet-page2.pdf
PHP | 评论:0
| 阅读:15168
Submitted by gouki on 2009, October 16, 10:02 PM
提起高春辉,恐怕更多的人想到的是手机之家。其实,还有一款PHP界的软件是大家所熟知的,那就是ecshop。当然现在的ecshop已经不是高春辉的了。几经转手,现在ecshop已经是shopex的旗下产品了。
4月份的时候,高春辉提出了新的架构,并整理出了一份PPT与大家共享,与“手机之家新系统介绍及架构分享”有关,过了几天,他把DAL方面的特点整理了一下,还是有关 DAL~,认为有一些特色:
XML/HTML代码
- 我也觉得其实这个 DAL 的最核心功能就是如何自动缓存和清理缓存了。因为不让程序员缓存和清理,就的是程序自己来管理缓存和清理缓存,总得清理嘛。不过这个还是保密一下吧。起码不是某些人想的只能缓存单条数据,也不是某些人想的清理是按照单条方式的清理。当然另外的一个核心功能就是分库分表的自动和透明化,这个功能有很多软件都实现了,就不多说了。
六个月过去了,高春辉终于放出了DAL 近期情况~,如果他愿意,估计可能会开源。如果东西很新鲜,那么极有可能引起一场革命。象他的ecshop一样,又或者象当年的ruby的 active record 。
真正的发布会带来什么呢?我也很期待
在
Tags: dal, 高春辉, 手机之家
PHP | 评论:0
| 阅读:18426
Submitted by gouki on 2009, October 15, 6:39 AM
想分析网页?不会写正则?这。。。一切都不是问题
在以前是不可想象的。但如今google的项目里有这个phpQuery,它可以让一切变得可能。。。
phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library.
Library is written in PHP5 and provides additional Command Line Interface (CLI).
如果你使用过jQuery,你会发现这一切是如此的相象。
PHP代码
- <?php
-
- include_once( './phpQuery.php' );
-
- $html = new phpQueryDocumentFile('xxx.html');
- $title = $html->find('title')->text();
-
- echo $title;
以上内容是取得网页的 title。多方便啊。。。
如果是取得某个class的内容呢?
PHP代码
- <?php
-
-
-
-
- $html->find('div.test eq(1)')->html();
-
呵呵,快去:http://code.google.com/p/phpquery/下载吧
Tags: phpquery
PHP | 评论:1
| 阅读:23596
Submitted by gouki on 2009, October 10, 4:09 PM
定界符这个东西功能很强大,特别是在引用多行HTML代码的时候,方便了PHP的开发者,但其实他的使用很妖异【没装过PHP5.3,所以不知道新的有没有变化】
1、heredoc syntax 里面只能是文字,凡是涉及到的变量都会被解析,不想被解析?美元前加反斜杠吧。。解析类中的变量?使用大括号吧。。。
2、不要妄想在定界符内赋值、计算等,如果是变量的相乘,请在外面解析完了放进来。。。
3、大括号要注意着使用,无论如何,大括号内不要同时出现多个变量【多个变量只应该是{$a->$b->$c}这种】
4、定界符标志后面不能有任何空格,如 <<<EOT,EOT;,这两个符号后都不能有任何字符,EOT;就是占一行,谁也不能抢它
PHP代码
- <?php
- print <<<EOT //如果这个后面有空格,报错。。。
- haha
- EOT; //如果这个后面有空格,报错【如果没有空格,就这样文件直接结束,同样报错,请在EOT;后面敲个回车吧】
就想到这么多。以后想到再写
顺便说明一下,PHP的文件还是有规范的。。
例如
1、空文件,一般代码为<?php,如果就这样写,肯定报错,最少在<?php后面得加一个空格
2、文件结尾,上面说的定界符,就是一例,如果文件正好是EOT;结尾,后面又没有 ?> ,文件绝对报错,所以必须要在EOT;后再敲一个回车。。。。
妖啊。。实在是妖啊。。
Tags: 定界符, heredoc
PHP | 评论:1
| 阅读:19017