2017-01-25 4 views
-1

У меня есть 2 специальные страницы на моем вики:Как вызвать функцию из другого Specialpage

SpecialOne.php 
SpecialTwo.php 

В основной функции моей первой страницы (wfSpecialOne()) я хочу использовать функции из моей 2-ой Specialpage (X(), Y()). Но отладчик говорит метод неизвестен.

Та же проблема, когда (в настоящее время) static function X() вызовы function A() который является частью SpecialTwo.php

Что я сделал до сих пор:

include_once("SpecialTwo.php"); 

class SpecialOne extends SpecialPage { 
    public function __construct() { 
     parent::__construct('One'); 
    } 
    public function execute($sub) { 
     $out = $this->getOutput(); 
     $this->wfSpecialOne(); 
    } 

    function wfSpeicalOne(){ 
    $var1 = X(); 
    $var2 = Y(); 
    } 
} 

Моя первая мысль была сделать все функции static. Но если это так, мне придется реорганизовать вызовы функций в каждом классе:

SpecialTwo::X(); 
SpecialTwo::Y(): 

Нет ли лучшего способа? или я что-то пропустил?

+1

Пожалуйста, покажите нам код SpecialTwo.php – olibiaz

ответ

0

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

Несвязанный, вам никогда не понадобится include и аналогичные команды. Если вы это сделаете, вы, вероятно, не запустили maintenance/generateLocalAutoload.php.

+0

Благодарим вас за советы. Я узнал, что мои «fucntions» X() и Y() на самом деле были классными методами SpecialTwo. Когда я вытащил их из класса, все в порядке. –

0

Когда SpecialTwo.php также расширяет SpecialPage, SpecialOne может расширять SpecialTwo.

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