[英]php class $this->regex not working
我在類內部遇到問題,其中在函數內部使用static private
變量不起作用。 但是,當正則表達式直接位於其中時,它確實起作用。
class Object{
static private $regex = "/\w+|\-\d+/";
//does not work (NULL)
public function tokenize($text){
preg_match_all($this->regex, $text, $matches);
var_dump($matches);
}
//works
public function tokenize($text){
$regex = "/\w+|\-\d+/";
preg_match_all($regex, $text, $matches);
var_dump($matches);
}
}
$o = New Object;
$o->tokenize("test text -123");
您將regex var聲明為static
(並且缺少$,但是我認為這是一個不同的錯誤)。 靜態變量不能作為對象屬性( $this->regex
)訪問,但它可以作為$ regex使用,因為您是在第二個函數的范圍內對其進行定義的。
因此,如果您想將其用作屬性,則可以通過刪除static
修飾符來解決此問題。 否則,您可以使用self::$regex
或Object::$regex
從對象內部的任何位置(后者也位於對象外部,但僅當它是公共的)靜態地訪問它。
截至文檔 :
將類屬性或方法聲明為靜態使其可以訪問,而無需實例化類。 實例化的類對象無法訪問聲明為static的屬性(盡管static方法可以)。
要在嘗試立即從類中的非static
上下文訪問private static
屬性時,應使用
self::$regex
或者,您可以將$regex
屬性重新聲明$regex
private
(非static
),然后可以將其作為$this->regex
進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.