日期:2014-05-17  浏览次数:20406 次

类外边的独立的自定义函数和类中静态方法有啥区别啊?


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');
------解决方案--------------------
这两个的区别你可以分别在类里面调用和类外部调用试试看就明白了。有些问题自己去发现和测试远比问出来印象深刻!
------解决方案--------------------
引用:


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(){