2016-03-23 3 views
0

Привет Я относительно новичок в ООП-PHP и пытаюсь разобраться в нескольких концепциях. У меня есть два метода: один открытый и один закрытый.Доступ к результатам с помощью другого метода

Публичная функция - это параметр, заполняемый значением get, а затем он использует закрытый метод для запроса базы данных.

public function viewProject($id) { 

    if (!intval($id)) { 
     $this->projectError = 'The requested project must be a numeric value'; 
     return false; 
    } 

    if (!$this->findProject($id)) { 
     $this->projectError = 'The specified project was not found.'; 
     return false; 
    } 

    return true; 
} 

private function findProject($pid) { 
    $data = $this->_db->get("projects", array('id', "=", $pid)); 
    return $data->results(); 
} 

Я хочу, чтобы иметь возможность сохранять результаты от метода findProject в вар как

$ this-> Projectname = // результат здесь имя

Однако я не совсем как получить доступ к результатам запроса в общедоступном методе.

+1

Основы ООП в PHP: http://php.net/manual/en/language.oop5.basic.php. Вам нужен атрибут класса для хранения ваших значений в частном порядке, но вне области его метода. – klaar

ответ

0

Попробуйте

public function viewProject($id) { 
    if (!intval($id)) { 
     $this->projectError = 'The requested project must be a numeric value'; 
     return false; 
    } 
    $this->$project = $this->findProject($id); //project has the value 
    if (!$project) { 
     $this->projectError = 'The specified project was not found.'; 
     return false; 
    } 



    return true; 

} 

private function findProject($pid) { 
    $data = $this->_db->get("projects", array('id', "=", $pid)); 
    return $data->results(); 

} 

надеюсь, что это помогает :)

+0

Можете ли вы объяснить, что вы сделали и почему? – klaar

+0

Я только что сохранил результат вызова функции $ this-> findProject() в проект $ this->, и это то, что он хочет – FastTurtle

+0

Это сработало, спасибо. – Paradigm

1

Все свойств описываемого класса, общественности, защищенные и частные могут быть доступны в каждом методе класса. Если вы определяете имя проекта как свойство (private), к нему можно обращаться любым другим способом.

Кроме того, ваш результат запроса, вероятно, является многомерным массивом, поэтому вы должны сами получить значение value_name из результата.

class A 
{ 
    protected $projectName; 

    public function viewProject($id) { 
     if (!intval($id)) { 
      $this->projectError = 'The requested project must be a numeric value'; 
      return false; 
     } 

     $results = $this->findProject($id); 
     if (!$results) { 
      $this->projectError = 'The specified project was not found.'; 
      return false; 
     } 

     //Parse results 
     //assuming $this->_db->get() returns a multi-dimensional array 
     //assuming 'projectName' corresponds is the db column name 
     $this->projectName = $results[0]['projectName']; 

     return true; 
    } 

    private function findProject($pid) { 
     $data = $this->_db->get("projects", array('id', "=", $pid)); 
     return $data->results(); 
    } 
} 
Смежные вопросы