Задать вопрос
@Viktor091

Почему при подключении трейта в два класса, один из этих классов программа перестает видеть?

Всем доброго времени суток!
Столкнулся с необходимостью применения трейтов PHP, и тут проблема. При подключении одного трейта в два не связанных между собой класса, один класс работает норм а на второй PHP ругается (Uncaught Error: Class 'MY_CLASS_1' not found).
TRAIT:
trait kmu_trait {
	public $index;
	public $kmu;
	public function __construct(int $num) {
		$this -> index = $num;
		$this -> kmu = $this -> search_kmu();
	}
	private function search_kmu() {
		global $mysqli;
		global $tasks;
		if ($tasks[$this -> index]['index'] == 'repost_arrived_container_vk') {
			return false;
		}else {
			$sql = $mysqli -> query("SELECT * FROM price WHERE namber_p_p=".$tasks[$this -> index]['id_kmu']);
			if ($sql == true) {
				$kmu = mysqli_fetch_assoc($sql);
			}else {
				$kmu = NULL;
				$errore = file_put_contents(ERRORE, 'Ошибка подключения к базе данных! '.date('H:i:s d.m.Yг.')."\n", FILE_APPEND);
				$tasks[$this -> index]['status'] = 'Ошибка';
				if (!empty($tasks[$this -> index]['count_error'])) {
					$count_error = $tasks[$this -> index]['count_error'];
				}else {
					$count_error = 0;
				}
				$tasks[$this -> index]['count_error'] = ++$count_error;
				$tasks[$this -> index]['time_done'] = time();
				$result = file_put_contents(TASKS, json_encode($tasks));
			}
			return $kmu;
		}
	}
}

Первый класс:
class MY_CLASS_1 {
	use kmu_trait;
//Далее методы
}

И второй:
class MY_CLASS_2 extends MY_CLASS{
	use kmu_trait;
//Далее методы
}

PHP ругается на первый класс!
  • Вопрос задан
  • 212 просмотров
Подписаться 2 Простой 18 комментариев
Ответ пользователя TheElePHPant К ответам на вопрос (2)
@TheElePHPant
А где объявлен класс MY_CLASS?

class MY_CLASS_2 extends MY_CLASS_1{

должно быть так

Ну и да, про кодстайл уже сказали.
Ответ написан