PHP私有变量问题

时间:2016-03-17 07:38:32

标签: php oop private

我尝试获取私有变量(limit)的值,但是我收到以下错误:

  

致命错误:未捕获错误:在第36行的/home/vagrant/Code/wp/wp-content/plugins/StorePress/app/library/Pagination.php中不在对象上下文中时使用$ this

我的班级:

$cia ="";
$grind = "";

while($data = mysql_fetch_array($sdata) ){
    if($data["cia"]){
        $cia .= $data["cia"] . "\r\n";
    }
    if($data["grind"]){
        $grind.= $data["grind"] . "\r\n";
    }
}
$grind = rtrim($grind);
$cia = rtrim($cia);

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

我的代码中是否有任何错误,或者是否有任何其他解决方案可以获得该值?

2 个答案:

答案 0 :(得分: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();

在第一行,您将创建新的Pagination()对象,在第二行中,您将从generatePagination类函数返回$ limit值。

答案 1 :(得分:2)

根据此link

,您的关键字__constructor不应该是__construct