2016-03-17 2 views
0

Я пытаюсь получить значение частной переменной (предел), но я получаю следующее сообщение об ошибке:PHP Private Variable вопрос

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

Я думаю, что проблема в вашей конструкции ООП. Вы не можете использовать частную переменную $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(); 

В первой строке, вы будете создавать новое разбиение на страницы() объект и во второй строке вы вернете значение $ limit из функции generatePagination class.

+0

$ пагинация = Разбивка :: getPagination(); Это также возвращает ту же ошибку. –

+0

Да, конечно, потому что оператор двойной толчки - это токен, который позволяет получить доступ к статическим, постоянным и переопределенным свойствам или методам класса. Ваш класс не является статичным, а переменная '$ limit' не является постоянной, поэтому вы не можете использовать эту конструкцию. [PHP doc] (http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php) – pes502

+0

Тогда каково решение для доступа к частной переменной из разных функций при вызове контроллера с его объектом? –

2

Не стоит ваше ключевое слово __constructor быть __construct вместо согласно этому link

Смежные вопросы