У меня есть модель с 2 функциями. Допустим, название модели Cars
, Я пытаюсь вызвать одну функцию brand
который возвращает массив, так что я могу использовать его внутри другого getBrand
функция.
public static function getBrand($data) {
$brandVariable = $this->brand();
for ($i=1; $i < count($brandVariable ) ; $i++) {
//do something
}
}
public static function brand() {
$arrayValues = array(
1 => 'Brand A',
2 => 'Brand B',
);
return arrayValues;
}
Поскольку значения в brand
функция, мне нужно передать его внутрь getBrand
,
Я получаю ошибку в for
петля. Я пробовал в другом файле (локальный PHP не Laravel), и он работает нормально. Но в Ларавеле это не дает ожидаемого результата.
использование Cars::brand
потому что вы объявили функции как статические
public static function getBrand($data=null) {
$Cars = new Cars();
$brandVariable = $Cars::brand();
for ($i=1; $i < count($brandVariable ) ; $i++) {
//do something
}
}
Живая демоверсия: https://eval.in/856708
Или же
public static function getBrand($data=null) {
$brandVariable = Cars::brand();
for ($i=1; $i < count($brandVariable ) ; $i++) {
//do something
}
}
Живая демоверсия: https://eval.in/856712
Ты звонишь brand
внутри статической функции и $this
недоступен внутри методов, объявленных как static
,
поскольку brand
объявлен как статическая функция, вы можете использовать один из следующих методов для вызова функции
если в классе
self::brand();
или же
static::brand();
снаружи класса
ClassName::brand();
функции статичны, поэтому вы должны использовать
self::brand()
вместо
$this->brand()