2011-01-30 3 views
0

У меня много разных PHP-файлов. Поскольку это тема Wordpress, мне нужно включить все мои функции в класс, чтобы избежать столкновений.Включить функцию PHP в класс?

То, что я хочу, имеет название темы как «префикс» (первая часть имени класса). Можно ли использовать один и тот же класс для всех функций, даже если они находятся в разных файлах PHP?

Вот как это может выглядеть:

myfunctions.php 
myfunctions_extra.php 

"myfunctions.php" включает в себя функцию test, которая добавляется к class my_class.

«myfunctions_extra.php» включает в себя функцию test2, которая также должна быть добавлена ​​к class my_class.

Возможно ли это? Как?

+0

Почему бы» Вы используете пространство имен? Или у одного класса есть методы, которые являются просто псевдонимами для функций в других файлах? –

ответ

0

NO. Не в PHP 5.3. Следующая версия будет включать в себя черты, которые делают это возможным, но в PHP 5.3: НЕТ. Ищите другой подход;)

Возможно, вы можете использовать пространства имен, но я не знаю, как Wordpress справляется с ними.

+0

Вы правы. Пока не повезло. –

1

Возможно, что-то вроде inheritance - это то, что вы ищете.

+1

Я бы изменил это, чтобы сказать наследование. В конце концов, это то, что есть. –

+0

Оглядываясь назад, это имеет смысл! – Prisoner

0

Есть один основной класс, который имеет методы, связанные с функциями из разных классов. Так, например, метод create_sidebar() в MyClass вызывает функцию create_sidebar() из любого файла, из которого он инициируется.

0

К сожалению, PHP не поддерживает понятие частичных классов. Вы не можете решить эту проблему таким образом.

Вам действительно нужен класс для этого? Если вы работаете на PHP 5.3, вы можете определить пространство имен для своих файлов, я не понимаю, как работает Wordpress с ними.

Другим вариантом является «подделка» пространства имен путем добавления префикса ко всем методам, а просто держать глобальную переменную, если вам нужно сохранить какое-то состояние, как это:

$myns_settings = array(..); 

// file1.php 
function myns_firstfunc() 
{ 
    global $myns_settings; 
    // You can access myns_settings here 
} 



// file2.php 
function myns_secondfunc() 
{ 
    global $myns_settings; 
    // You can access myns_settings here as well 
} 
Смежные вопросы