我现在有了这个字符串类(键入hinting,因为它很有趣):
/**
* A String class for string type hinting in functions
*/
class string {
/**
* The value
* @var string
*/
public $string;
/**
* makes a string out of a string... georgous..
* @param string $string
*/
public function __construct($string) {
if(!is_string($string)):
return false;
endif;
$this->string = new self($string);
}
/**
* magic toString method ;)
* @return string
*/
public function __toString() {
return $this->string;
}
/**
* Serializer
* @return array
*/
public function __sleep() {
return ['string'];
}
/**
* array maker
* @return array
*/
public function toArray() {
return [$this->string];
}
/**
* split a string
* @return string[]
*/
public function splitstr() {
return explode("", $this->string);
}
}
当我做$this->string = new self($string);
时,PHP应该创建一个永不终止的递归弹药数。这看起来像:
new string("test) {
$string = new string("test") {
$string = new string("test") {
$string = new string("test") ... AND SO ON FOREVER
}
}
}
现在我的问题是:为什么PHP在执行此操作时会重置网络连接(PHP和Apache2)?
/**
* makes a string out of a string... georgous..
* @param string $string
*/
public function __construct($string) {
if(!is_string($string)):
return false;
endif;
$this->string = new self($string);
}
是无限重燃
你可以试试
!self::$string AND self::$string = new self($string);
但我不认为这有什么帮助。
为什么首先要制作new self()
查找PHP中类的单个实例的含义。这是在php中使用new self()
的唯一必要方法。
并且在您的代码中没有type hinting
class A {
function typeHintingFunction(string $sting){
}
}
explode($this->string);
错过一个参数
有助于的Holps