Наследование родительского класса от функций дочернего класса - PullRequest
0 голосов
/ 28 марта 2012

Я пишу плагин питания для WordPress, который в основном предоставляет набор функций, облегчающих разработку.

Не беспокойтесь о wp, это вопрос PHP. У меня есть один мастер-класс «my_wp_funcs» и несколько других больших классов, которые делают разные вещи, которые я написал отдельно и работают, например, самостоятельно: вставьте новый пост.

Я бы хотел использовать этот синтаксис:

$wpfuncs = new funcs;
$wpfuncs->createpost($args);
$wpfuncs->addimage();

где класс createpost расширяет класс funcs, наряду с другими классами, которые также расширяют funcs.

Я читал об абстракции, но постоянно получаю ошибки. Вот триммерная версия того, что у меня есть:

<?php

$wpfuncs = new funcs;
$wpfuncs->createpost($args);

abstract class funcs
{
    abstract protected function createpost();

    public function createpost($args){
        $tool = new $this->boss_posttype('derp', 'derps');
    }
}

class createpost extends funcs{
    public function __construct(){
        //do stuff
    }
}

Ура за любую помощь!

1 Ответ

0 голосов
/ 28 марта 2012

Вы не можете определить метод как abstract в абстрактном классе, а затем определить его для реального в том же классе.Вы также не можете вызывать абстрактный класс напрямую.

Возможно, вы хотите что-то вроде этого:

abstract class funcs
{
    abstract public function createpost($args);
}

class myFuncs {
    public function createpost($args){
        $tool = new $this->boss_posttype('derp', 'derps');
        // do other stuff
    }
}


$wpfuncs = new myFuncs();
$wpfuncs->createpost($args);

Обратите внимание, что ваша реализация идет в вашем собственном классе, и эта реализация должна соответствовать вашейабстрактное определение.(они оба должны быть публичными и принимать одинаковые аргументы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...