Bir proje im üzerinde çalışan ama onun böyle iyi bir fikir olmadığını merak im için özel bir datatypes / prototip yapma im düşünme?
Örneğin
class String
{
var $Value;
private $escaped = false;
function __construct($String)
{
$this->Value = $String;
}
function escape()
{
if($escaped === false)
{
$this->Value = Registry::get('Database')->escape($this->Value);
}
return $this;
}
function trim()
{
$this->Value = trim($this->Value);
return $this;
}
function __toString()
{
return $this->__toString();
}
}
$myValue = new String('Hello World')->trim()->escape();
//$myValue is now prepared for DB insert
Vb Array, Object, String Kaynak için prototip olacak.
Dizilerle orada uygulayacak Iterator ve bu
I aklında bazı faydaları örneğin nesnelerin belirli veri türleri
interface Insert
{
public function Insert(String $Value); //Array / Object / Resource
}
Özel prototip tüm dizeleri için yararlı olacaktır.
Ama bu kaynak kullanımının miktarı olacak şekilde dışarı faydaları düşünüyorsunuz?
PT için güncellendi
$String = new String('ValueText');
sprintf('Test %s',$String); //Works
trim($String); //Works
base64_encode($String); //Works
Ayrıca diziler için SPL Kütüphane mükemmel olurdu.
class Array implements ArrayAccess, Iterator, Countable
{
public function __construct(){}
public function offsetSet($offset,$value){}
public function offsetExists($offset){}
public function offsetUnset($offset){}
public function offsetGet($offset){}
public function rewind(){}
public function current(){}
public function key(){}
public function next(){}
public function valid(){}
public function count(){}
}
Başka bir fikir uzatılabilen kişiler olacaktır
class DatabaseVariable extends String
{
function __construct($string)
{
parent::__constrcut($string);
}
public function escape()
{
//Blah
}
}
Yeni bir varlık, bir veri türü uzatmak sahip bu veri türü için kullanılabilir yöntemleri miras yapacaktır.
Autoboxing hakkında tartışıldığı gibi, bu seyir için tam sistem im ama geçmedi tartışmaları henüz, benim yeni proje (Forum Sistemi) için cadı ben diğer gün başladı, ben devam edin ve benim fikrim kullanmanız gerektiğini düşünüyorsunuz?, kullanıcı veri türleri ile daha hızlı etkileşim yapmak mümkün olacak, ve geçirilen bir nesne desteklemeyen bir işlevi varsa, biz de yapabiliriz
$RawResource = $Resourtce->Raw();
//...
$Resource->Set($RawResource);