Я использую пространства имен.PHP Namespace 5.3 и WordPress Widget
Я пытаюсь создать WordPress виджет (http://codex.wordpress.org/Widgets_API)
С пространствами имен следующие выдает ошибку, потому что аргументы не могут быть переданы (и без пространств имен, очевидно, работает как обычный)
namespace a\b\c;
class whatever extends \WP_Widget {
function whatever() {
parent::WP_Widget('name1', 'name2');
}
// .. other functions left out
}
add_action('widgets_init',
create_function('', 'return register_widget("a\b\c\whatever");'));
ммм ... что такое правильный синтаксис для 'родительского :: WP_Widget' с помощью пространств имен?
(сообщение COMPLETE ошибка:
Warning: Missing argument 2 for WP_Widget::__construct(), called in
C:\xampp\htdocs\wp2\wp-includes\widgets.php on line 324 and defined in
C:\xampp\htdocs\wp2\wp-includes\widgets.php on line 93
)
И отладчик показывает ничего не прошло:
Variables in local scope (#14)
$control_options = Undefined
$id_base = boolean false
$name = Undefined
$widget_options = Undefined
(только $ требуется имя)
Сообщения точного сообщения об ошибке здесь. От взгляда на код не похоже, что что-то не так. Также почему вы используете родительский, а не только $ this-> WP_Widget? И, наконец, WP_Widget является конструктором класса WP_Widget? Почему функция имеет то же имя, что и класс? Если это конструктор, то лучше использовать __construct() – Dmitri
no: есть, фабрика виджета является частью WordPress с 2.8: если вы нажмете Eclipse на WP_Widget, вы получите определение, которое находится в ... http: // core. svn.wordpress.org/trunk/wp-includes/widgets ДОЛЖЕН быть перезаписан, а не _construct, см. исходный код (не могу помочь, он его не написал) – edelwater
@dmitri: оба родителя :: WP_Widget и $ this-> WP_Widget доставлять одна и та же ошибка, оба варианта используются в Интернете. WP_Widget - это функция, которая должна быть перезаписана в соответствии с CODEX. – edelwater