2016-03-17 136 views
0

我试图让一个私有变量(极限)的值,但我得到了以下错误:PHP私有变量问题

Fatal error: Uncaught Error: Using $this when not in object context in /home/vagrant/Code/wp/wp-content/plugins/StorePress/app/library/Pagination.php on line 36

我的班级:

class Pagination 
    { 
    private $limit = 0; 
    private $limit_start = 0; 
    private $total = 0; 

/** 
    * Generate Pagination for Products 
    * @param $pagination 
    * @return string 
    */ 
public function __constructor($pagination = null) 
{ 
    $this->limit = $pagination['limit']; 
    $this->lim_start = ($pagination['start']) ?: null; 
    $this->total = $pagination['total']; 
} 

public function generatePagination() 
{ 
    echo $this->limit; 
} 

在这里,我想打印“$ this-> limit”,一个私有变量,但不允许打印由“__constructor”分配的值。

我的代码有什么问题,或者是否有任何其他解决方案来获得该值?

回答

3

我认为,问题在于你的OOP构造。当你不首先创建类对象时,你不能回显$this私有变量。因此,解决办法可能是:

class Pagination 
    { 
    private $limit = 0; 
    private $limit_start = 0; 
    private $total = 0; 

/** 
    * Generate Pagination for Products 
    * @param $pagination 
    * @return string 
    */ 
public function __constructor($pagination = null) 
{ 
    $this->limit = $pagination['limit']; 
    $this->lim_start = ($pagination['start']) ?: null; 
    $this->total = $pagination['total']; 
} 

public function generatePagination() 
{ 
    return $this->limit; 
} 

,然后在你的代码,你需要呼应的限值,则可以使用:

$pagination = new Pagination(); 
echo $pagination->generatePagination(); 

在第一行,你将创造新的分页()对象,在第二行中,您将返回generatePagination类函数中的$ limit值。

+0

$分页=分页:: getPagination()__construct; 这也返回相同的错误。 –

+0

是的,当然,因为双冒号运算符是一个令牌,允许访问类的静态,常量和重写属性或方法。你的类不是静态的,'$ limit'变量不是常量,所以你不能使用这个构造。 [PHP文档](http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php) – pes502

+0

那么从控制器调用其对象时,从不同函数访问私有变量的解决方案是什么? –

2

应该不是你的关键词__constructor而不是根据这个link