Ben çağıran statik fonksiyonu üzerinden erişilebilir yanı sıra nesne yöntemleri gereken bir sınıf üzerinde çalışıyorum. Ben buldum tek şey çoklu fonksiyonları üzerinde mantık çoğaltarak olmam.
Basitleştirilmiş bir örnek:
class Configurable{
protected $configurations = array();
protected static $static_configurations = array();
public function configure($name, $value){
// ...lots of validation logic...
$this->configurations[$name] = $value;
}
public static function static_configure($name, $value){
// ...lots of validation logic (repeated)...
self::$static_configurations[$name] = $value;
}
}
Ben buna bir çözüm bulduk, ama gerçekten kirli hissediyor:
class Configurable{
protected $configurations = array();
protected static $static_configurations = array();
public function configure($name, $value){
// ...lots of validation logic...
if (isset($this)){
$this->configurations[$name] = $value;
}
else{
self::$static_configurations[$name] = $value;
}
}
}
Ben uygulama boyunca yapılandırmaları ayarlayabilirsiniz böylece ben de statik işlev gerekir. Ayrıca, bu teknik ile güzel bir şey ben de kapsamları aynı yöntem adları kullanabilirsiniz olmasıdır.
Böyle test kapsamı ile herhangi bir sorun var mı? Performans sorunları, ileriye dönük uyumluluk sorunları, vb tüm PHP 5.2 benim için çalışır, ve ben <5 desteklemek gerekmez.