php类扩展方法与静态方法,哪一种更好
方法1:php类扩展方法与静态方法,哪一种更好,php,class,static,extend,Php,Class,Static,Extend,方法1: class Storage extends SaeStorage { public function save($data,$name){ if (! $this->write ( ST_DOMAIN, $name, $data )){ $error_message = $this->errmsg(); $result['error'] = $error_message; return $result;
class Storage extends SaeStorage {
public function save($data,$name){
if (! $this->write ( ST_DOMAIN, $name, $data )){
$error_message = $this->errmsg();
$result['error'] = $error_message;
return $result;
}else{
$url = $this->getUrl ( ST_DOMAIN, $name );
return $url;
}
}
}
方法2:
class Storage {
public static function save($data,$name){
$SaeStorage = new SaeStorage();
if (! $SaeStorage->write ( ST_DOMAIN, $name, $data )){
$error_message = $this->errmsg();
$result['error'] = $error_message;
return $result;
}else{
$url = $SaeStorage->getUrl ( ST_DOMAIN, $name );
return $url;
}
}
}如果要在整个存储类中使用SaeStorage类,那么方法1更有意义。每当您想在扩展类中使用方法或属性时,就不必实例化新对象。我建议使用依赖注入模式。
示例是否真的是一个设计问题。这两种方法都很好,取决于您的需要 如果您想在存储中使用所有SaeStorage功能,第一个更好,如果您不需要,第二个更好,只有在save方法中
无论如何,我建议在这里使用第一个,因为你也可以在使用SaeStorage的地方使用它。取决于你所说的更好是什么意思。我不想让性能受到质疑,因为这两种方法之间的性能差异非常小(如果有的话),可以忽略 那么这完全是一个设计问题。你需要找到答案的事情有:
SaeStorage是sae提供的一个类(如gae,但lamp),对于资源存储,我想在自定义类中隐藏这个SaeStorage,因此如果需要,可以很容易地将其更改为其他方法。在这种情况下,依赖项注入模式听起来不是一个好方法