学习php疑惑

看了一下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

可是还是郁闷,国为不太明白为什么,真是伤!
 

posted @ 2013-03-12 15:36  JTeacher  阅读(284)  评论(0编辑  收藏  举报