看了一下wordpress代码,确实是OOP初级新手,菜鸟,一开始就卡壳了——类及类的实例化:
这是wp-includes下的class-wp类定义中的代码:
var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');
/**
********************
**/
function add_query_var($qv) {
if ( !in_array($qv, $this->public_query_vars) )
$this->public_query_vars[] = $qv;
}
因为不太懂-> 的含义,百度了一下有一个例子是这样的:
<?php class tuser{ public $_name; function getname(){ echo $this->_name; } } ?>
调用时的代码:
<?php $user1=new tuser(); $user1->_name='haha'; $user1->getname(); ?>
结果IE中输出:_name='haha'; $user1->getname(); ?>
可是这不是我想的效果,我以为只会输出"haha"。为什么会这样,是不是不应该这样定义?想到这里,马上查了一下PHP的手册,结果人家是这样定义和使用:
class enum { private $__this = array(); function __construct() { $args = func_get_args(); $i = 0; do{ $this->__this[$args[$i]] = $i; } while(count($args) > ++$i); } public function __get($n){ return $this->__this[$n]; } }; $days = new enum( "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ); $today = $days->Thursday; echo $today;
最后一段代码,运行结果为4
可是还是郁闷,国为不太明白为什么,真是伤!