Вы могли использовать Шаблон "наблюдатель". Простой функциональный способ выполнить это:
<?php
/** Plugin system **/
$listeners = array();
/* Create an entry point for plugins */
function hook() {
global $listeners;
$num_args = func_num_args();
$args = func_get_args();
if($num_args < 2)
trigger_error("Insufficient arguments", E_USER_ERROR);
// Hook name should always be first argument
$hook_name = array_shift($args);
if(!isset($listeners[$hook_name]))
return; // No plugins have registered this hook
foreach($listeners[$hook_name] as $func) {
$args = $func($args);
}
return $args;
}
/* Attach a function to a hook */
function add_listener($hook, $function_name) {
global $listeners;
$listeners[$hook][] = $function_name;
}
/////////////////////////
/** Sample Plugin **/
add_listener('a_b', 'my_plugin_func1');
add_listener('str', 'my_plugin_func2');
function my_plugin_func1($args) {
return array(4, 5);
}
function my_plugin_func2($args) {
return str_replace('sample', 'CRAZY', $args[0]);
}
/////////////////////////
/** Sample Application **/
$a = 1;
$b = 2;
list($a, $b) = hook('a_b', $a, $b);
$str = "This is my sample application\n";
$str .= "$a + $b = ".($a+$b)."\n";
$str .= "$a * $b = ".($a*$b)."\n";
$str = hook('str', $str);
echo $str;
?>
Вывод:
This is my CRAZY application
4 + 5 = 9
4 * 5 = 20
Примечания:
Для этого исходного кода в качестве примера, необходимо объявить все плагины перед фактическим исходным кодом, что Вы хотите быть растяжимыми. Я включал пример того, как обработать единственный или несколько значений, передаваемых плагину. Самая твердая часть этого пишет фактическую документацию, которая перечисляет, какие аргументы передаются каждому рычагу.
Это - всего один метод выполнения сменной системы в PHP. Существуют лучшие альтернативы, я предлагаю, чтобы Вы проверили Документацию WordPress для получения дополнительной информации.
Извините, кажется, что символы подчеркивания заменяются объектами HTML Скидкой с цены? Я могу повторно отправить этот код, когда эта ошибка исправлена.
Редактирование: Nevermind, только кажется, что путь, когда Вы редактируете
You can use the method [generateProxyCode
] provided in the package SOAP_WSDL (http://pear.php.net/reference/SOAP-0.9.4/SOAP/SOAP_WSDL.html#methodgenerateProxyCode) method instead and save it to a file:
$WSDL = new SOAP_WSDL($wsdl_url);
$php = $WSDL->generateProxyCode();
file_put_contents('wsdl_proxy.php', '<?php ' . $php . ' ?>');
require 'wsdl_proxy.php';
Просто чтобы помочь любому, кто наткнется на этот пост и задумается: «Какого черта я могу работать с этой штукой SOAP_WSDL?» (как и я)
Откройте командную строку и перейдите в свой каталог php (в этом примере я установил XAMPP Lite)
Попав в каталог php, я запустил скрипт pear.bat. После этого я смог ввести следующую строку через cmd
pear -V (предоставляет версию вашей установки)
pear list
Если вы набираете вышеуказанное и не видите SOAP, вам необходимо выполнить следующее из строки cmd:
pear install Net_DIME-1.0.1
pear install Mail_Mime-1.5.2
pear install Mail-1.2.0b1
pear install SOAP-0.12.0
Now после установки этих пакетов и выполнения еще одного «грушевого списка» вы должны увидеть список SOAP.
Есть приложение для этого, оно называется wsdl2phpgenerator:
http://code.google.com/p/wsdl2phpgenerator/
Запустите его с WSDL файлом и оно сгенерирует классы на основе WSDL сервисов.