[原创]从一个类用静态方式调用另一个类的方法时,将自动具备来源类的方法和属性 - konakona
konakona
Dream Afar.
konakona

[原创]从一个类用静态方式调用另一个类的方法时,将自动具备来源类的方法和属性

我是因为在做项目的时候发现方法应该写在另一个类里,于是从权限类,拷贝到了菜单类里,但执行的时候竟然发现了这个问题……

很多人都不知道可以这样用,事实上我也认为这样会搞混淆,但确实可以省去一些重新获取变量值的动作。

值得注意的几点:所有方法都没有申明static,在被用静态方式调用的方法里,可以用$this去调用a类的方法和属性。

个人猜测:因为是在a类的方法里调用的,所以也算是a类的一部分,所以可以用a类的局部变量、方法。

class a {

public $db = null;

public function all_menus() {

echo "我是all_menus";

}

public function __construct($db) {

if ($this->db == null) {

$this->db = $db;

}

$this->db->setDataBase("sites_users_info");  //设置数据库

}

public function save_competence() {

//...一系列检测$_POST数据合法性,插入数据库后,最后,执行另一个类的方法,用静态方式调用,省去实例化过程

menu::create_menu_styles();

}

}

另一个类menu的样子大概:

class menu {

public $db = null;

public function all_menus() {

echo "我是all_menus";

}

public function create_menu_styles() {

$this->all_menus();     //会显示

var_dump($this->db);   //会显示

}

}

我不知道这该归类为不严谨的PHP,还是怎么。
这样用很容易混淆,这种写法也不容易发现。
任何杂志、论坛、书籍都未介绍过这个用法。

真正原因:
http://php.net/manual/en/language.oop5.static.php

赞赏
# #
首页      程序开发      PHP      [原创]从一个类用静态方式调用另一个类的方法时,将自动具备来源类的方法和属性

团哥

文章作者

继续玩我的CODE,让别人说去。 低调,就是这么自信。

konakona

[原创]从一个类用静态方式调用另一个类的方法时,将自动具备来源类的方法和属性
因为是在a类的方法里调用的,所以也算是a类的一部分,所以可以用a类的局部变量、方法。
扫描二维码继续阅读
2010-08-03