Обратиться к статической переменной класса
Нужно при создании объекта добавить его в массив, но при дампе говорит что массив пуст, что я делаю не так?
class apple
{
private $arr_cou = 0;
public $date;
public $status;
public $Aple_persent;
public static $apples = array();
function __construct($obj)
{
$this->date = 0;
$this->status = 0;
$this->Aple_persent = 0;
$apples[$arr_cou] = $obj;
$arr_cou++;
}
}
$a = new apple($a);
Ответы (2 шт):
Автор решения: Максим Степанов
→ Ссылка
К статическому свойству нельзя обращаться просто через $, нужно использовать self::.
Вы можете класс в простейшем случае исправить так:
<?php
class apple{
public $date;
public $status;
public $Aple_persent;
public static $apples = array();
function __construct() {
$this->date=0;
$this->status = 0;
$this->Aple_persent = 0;
self::$apples[] = $this; // сохраняйте объект в массив, ключ указывать не обязательно
}
// добавить статическую публичную функцию, которая будет доставать количество объектов в `$apples`
public static function count()
{
return count(self::$apples);
}
}
$a = new apple();
$b = new apple();
$c = new apple();
var_dump(apple::count()); // 3
Автор решения: Alexey Bril
→ Ссылка
Обращаясь к статическому свойству класса вы должны указать ключевое слово self
https://www.php.net/manual/ru/language.oop5.static.php
а чтобы обратиться к свойству объекта вы должны использовать экземпляр этого объекта.
иными словами это:
$apples[$arr_cou] = $obj;
измените на это:
self::$apples[$this->arr_cou] = $obj;
$this->arr_cou++;