ООП в php (наследовать поля класса)

dallas777

Новичок
Добрый день.
Я хотел поинтересоваться тут можно создать тему чтобы оговорить возможность ООП наследовать поля класса ( php ) ?
 
Последнее редактирование:

dallas777

Новичок
Лучше бы создал тему с ошибкой , нежели этот вопрос....
У меня есть класс "ArticleList" в котором есть поле -массив в которое добавляется статьи с помощью метода add();
Далее наследую от родительского класса, и пытаюсь вывести поле со значениями в массиве уже в наследнике.
При переборе массива в классе наследника , ничего не выводится.
Проверил унаследованное поле на пустоту, таки да, там пусто.
Вопрос, как унаследовать поле род. класса с текущими значениями в класс потомка?
 

AmdY

Пью пиво
Команда форума
dallas777, покажи код. У вас смешалось в кучу класс, объект и, видимо, статика.
 

dallas777

Новичок
PHP:
class ArticleList{
    public $alist;
        public function add($article){
            $this -> alist[] = $article;
        }
    public function view(){
        foreach($this -> alist as $article){
            $article -> view();
            echo '<hr>';
        }
    }
 
    public function delete($id){
        foreach($this -> alist as $key => $article){
            if($article == $id){
                unset($this -> alist[$key]);
            }
        }
    }
}

class Reverse extends ArticleList{
  public function reverse(){
        /*if($this -> alist != null){
            echo 'There are data in the array <br>';
        }else{
            echo 'There are not existing data in the array<br>';
        }*/
        $this -> revlist = array_reverse($this -> alist);
        foreach($this -> revlist as $article){
            $article -> view();
        }
    }
 
Последнее редактирование модератором:

AnrDaemon

Продвинутый новичок
У меня есть класс объект класса "ArticleList" в котором есть поле -массив в которое добавляется статьи с помощью метода add();
Далее наследую от родительского класса, и пытаюсь вывести поле со значениями в массиве уже в наследнике.
При переборе массива в классе наследника , ничего не выводится.
Проверил унаследованное поле на пустоту, таки да, там пусто.
Вопрос, как унаследовать поле род. класса с текущими значениями в класс потомка?
Встречный вопрос - откуда класс узнает о том, что вы там делаете с объектом?

И не сочтите за труд использовать соответствующие теги для выделения кода.
 

scorpion-ds

Новичок
Судя по коду свойство "$this -> alist" должно быть доступным в наследнике.

И покажи как ты создаешь объект.
 

Hello

Новичок
dallas777
Тебе необходимо использовать статические свойства.
PHP:
public static $alist;
И все обращения
PHP:
$this -> alist
заменить на
PHP:
self::alist
 

dallas777

Новичок
dallas777, используй тег PHP, он в редакторе доступен: http://prntscr.com/5sor0j

PHP:
$alist = new ArticleList;
$rev = new Reverse;
Это не правильно! Тебе надо создавать только объект наследника.
Экземпляр класса
PHP:
$alist
я создавал для добавления в список статей
А экземпляр класса
PHP:
$rev
как раз для наследника, наверное я не правильно вам дал информацию.
 

AmdY

Пью пиво
Команда форума
ArticleList - это класс
$a = new ArticleList(); // это один объект
$b = new ArticleList();// это второй объект
у них свойство alist разное, так как оно принадлежит объекту
 

AnrDaemon

Продвинутый новичок
Вы не информацию даёте неправильно, а документацию до конца не дочитали.
Класс - это инструкция о том, как создавать объект. Если вы по инструкции создали тетрадь и заполняете её своими виршами, а потом создали по модифицированной инструкции блокнотик - откуда ваш блокнотик узнает о том, что вы в тетрадь понаписали?
Создавайте блокнот сразу и его заполняйте.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Немного подправил название.
 

Hello

Новичок
Hello,причем тут статические методы?
Попробуй читать автора
У меня есть класс "ArticleList" в котором есть поле -массив в которое добавляется статьи с помощью метода add();
Далее наследую от родительского класса, и пытаюсь вывести поле со значениями в массиве уже в наследнике.
При переборе массива в классе наследника , ничего не выводится.
Он хочет добавлять в ArticleList и чтобы они появлялись в наследнике Reverse
 

scorpion-ds

Новичок
Hello, описание класса из которого получаем объект в "$article" упущен, потому не важно, что там.

На данный момент, я обратил внимание, что он создает класс родитель и класс наследник отдельно, это не правильно, а я предпочитаю решать проблемы по мере их поступления. Далее я уже телепатически предполагаю, что данные он заносит в класс родитель и потом надеется получить эти данные из объекта класса "Reverse" который он создал отдельно и он ничего не знает об объекте класса "ArticleList" коду он заносил данные.
 

dallas777

Новичок
Hello, описание класса из которого получаем объект в "$article" упущен, потому не важно, что там.

На данный момент, я обратил внимание, что он создает класс родитель и класс наследник отдельно, это не правильно, а я предпочитаю решать проблемы по мере их поступления. Далее я уже телепатически предполагаю, что данные он заносит в класс родитель и потом надеется получить эти данные из объекта класса "Reverse" который он создал отдельно и он ничего не знает об объекте класса "ArticleList" коду он заносил данные.
То есть нужно создать объект Revers - в этом объекте будут методы и свойства класса "ArticleList" потому что он расширяет его?
 
Сверху