ошибка статической функции при использовании запроса PDO - PullRequest
0 голосов
/ 04 июля 2018

Я изучаю oophp, и у меня есть небольшая проблема.

После 2 часов поиска мне нужна ваша помощь: (

Мой класс:

<?php
namespace App;
use \PDO;

class Database {
 private $_pdo = null;
 private static $_connexion = null;

 // + my 4 mysql const

 public function__construct(){
  $this->pdo = new PDO ('mysql:dbname='.const.';host='.const.'', const, const);
}

 public static function getPdo(){
  if(is_null(self::$_connexion)){
   self::$_connexion = new Database();
  }
 }

 public static function select($test, $test2){
  self::getPdo();
  if($test == "*"){
   $req = self::$_pdo->query("SELECT * FROM $test2"); // line 29
  }
 }
}
$test = Database::select('*', 'users');

Ошибка: (строка 29) Неустранимая ошибка: необученная ошибка: доступ к необъявленной статической ошибке свойство: приложение \ база данных :: $ _ pdo

Я не понимаю, что я должен делать, я не нашел подобных проблем в моем исследовании.

Спасибо за помощь!

Редактировать (извините): Боже, я идиот ... Я удалил статический, потому что у меня было это: Примечание: Доступ к статическому свойству App \ Database :: $ _ pdo как не статичный в строке 15 (новый PDO ...)

Настоящая ошибка: (когда $ _pdo статичен):

Вызов функции-члена query () в null в строке 29

1 Ответ

0 голосов
/ 04 июля 2018

Вы пытаетесь получить доступ к $_pdo как статической переменной, даже если она не объявлена ​​как таковая.

Это взлом, но это работает. Вы можете адаптировать его к своему классу

class Test {

    private $_pdo ;
    private static $self ;

    function __construct() {
        self::$self = $this ;
    }

    public static function select() {
        self::$self->_pdo = 'test' ;    
    }
}

$t = new Test() ;
$t::select() ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...