Если вы использовали array_merge()
, вместо этого он, вероятно, покажет результаты лучше ...
class Foo {
public function edit() {
$item = [1,2];
return $item;
}
}
class Bar extends Foo {
public function edit() {
$item = parent::edit(); // Call parent method and store returned value
$item2 = [3,4]; //Here, I added (extended the method with) some more variables
return array_merge($item, $item2); // Here I override the return of the parent method.
}
}
$a = new Bar();
print_r($a->edit());
Это выдаст -
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
Таким образом, вызов parent::edit()
вернет массив из родительского класса, и он будет добавлен в массив из функции второго класса.
Обновление:
Я не могу проверить это, но, надеюсь, это даст вам то, что вы после ...
class Foo {
protected function getData() {
return [1,2];
}
public function edit() {
return return view('view-file', compact($this->getData()));
}
}
class Bar extends Foo {
protected function getData() {
$item = parent::edit();
$item2 = [3,4];
return array_merge($item, $item2);
}
}
Это означает, что единственный раз, когда вы создаете представление в базовом классе, все, что вы делаете, это добавляете дополнительную информацию в производный класс.