你的写法是 PHP 4 格式,只是PHP在向下兼容罢了。。
类方法的静态调用问题。。你是想知道,即然可以静态调用,为什么还要实例化对象。
从使用的角度来说,区别在于。这是一个对象。还是一个类。主要是思路上的区别。从书写的角度来说,也是各有优缺点。。
正如你看到的,静态调用可以省去实例化,而且全局有效。但是用起来,更像是自定义函数。很难体现出 OOP 思想所在。
实例化之后的变量是一个对象,有明确的方法和属性。从编程思路上来说更清晰。
如果你只是以这么简单的代码来举例,感觉当然都一样。那么我举个例子。
$mysql = new db_mysql(); //实例化一个MYSQL对象
$rows = $mysql->table('test')->select(); //MYSQL 对象查询一个表数据。
$mysql->debug(); // MYSQL 打印错误信息
以上代码全是 MYSQL 对象在操作。。
如果用全静态化的方法写。就得这么写:
db_mysql::table('test'); //设置一个数据表,是谁在控制。
$rows = db_mysql::select(); //查询数据,谁在查?
db_mysq::debug(); //打印错误信息,错误信息是谁发出来的?
以上代码对象完全不清晰。只知道是 MYSQL 的一些功能。
你还觉得这么写方便么?而且代码长起来会更混乱。思路都已经有些混乱了。如果你试着封装这么一个类,你会觉得更麻烦。
不是所有的方法都可以这样的,必须是用static声明的方法才能用one::get()来调用,像你上面说的的是不能这样调用的!!