Home > Article > Backend Development > 类外边的独立的自定义函数和类中静态方法有啥区别啊?
function test(){ ……… return $result; }function test1(){ ……… return $result; }……function testN(){ ……… return $result; }class funs{ static function test(){ ……… return $result; } static function test1(){ ……… return $result; } …… static function testN(){ ……… return $result; }}$a = test();$b = funs::test()……
按照 php5.3 的约束,静态方法只能访问静态属性
那么,静态方法和普通函数没有太大的区别
其实这种奇异的写法会逐步被命名空间取代
当然,有人会说不同的类可以定义同名的静态方法,来实现差异化
但是命名空间就是用来实现这个目的的
按照PHP的?行原理?理解:
php每次?行的?候写在类外边的function他会先遍历一遍,而写在class内的则不遍历,但从此我感觉静态封装速度会比外部的function快.
OOP方式是目前推崇的,所以推荐把function封装到class内成为静态方法.使用的时候也不会太繁琐.
至少我的所以方法全部封装到了class内成为了static方法,如:
class abc{
public static function ff($a){
echo $a;
}
}
abc::ff('23');
嗯,感觉把函数都放到类里写成静态的会实现归类,有一种规矩的感觉,比如把关于文件的函数都放在file类中等等,然后使用的时候系统__autoload自动调用 不用手动包含
不过看了很多比较知名的程序,不是这么做的,新手很迷茫 呵呵
这两个的区别你可以分别在类里面调用和类外部调用试试看就明白了。有些问题自己去发现和测试远比问出来印象深刻!
function test(){ ……… return $result; }function test1(){ ……… return $result; }……function testN(){ ……… return $result; }class funs{ static function test(){ ……… return $result; } static function test1(){ ……… return $result; } …… static function testN(){ ……… return $result; }}$a = test();$b = funs::test()……
我的意见和老徐接近,命名空间是趋势
只是目前一些脚本解析语言对命名空间处理较慢(只是相对而言),但我觉得以后会改善的