2012-03-28 3 views
0

Я пишу плагин для 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 
    } 
} 

Приветствия за помощь!

+0

Возможно, поделитесь некоторыми ошибками, которые вы получаете. Вы также получаете ошибки с этой версией «триммера», которую вы опубликовали? – iandouglas

ответ

0

Вы не можете определить метод как 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); 

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

Смежные вопросы