以上代码不适用于我,是否正确或我方有任何错误?
这对我也不起作用。因为它会引发以下致命错误:
PHP致命错误:在中的命名空间{}之外可能不存在任何代码。。。
这是因为PHPmanual 表示:
除了开头的declare语句外,命名空间括号外不能存在任何PHP代码。
因此,您的代码可以通过两种方式修复:
使用无括号语法。
<?php
namespace NS;
class MyClass {
public function __construct() {
add_action( \'init\',array( $this, \'getStuffDone\' ) );
}
public function getStuffDone() {
// .. This is where stuff gets done ..
}
}
$var = new MyClass();
输入全局代码(或
$var = new MyClass();
) 在命名空间语句中(
namespace {}
) 没有命名空间<请注意,您需要使用
NS\\MyClass
而不仅仅是
MyClass
.
<?php
// No code here. (except `declare`)
namespace NS {
class MyClass {
public function __construct() {
add_action( \'init\',array( $this, \'getStuffDone\' ) );
}
public function getStuffDone() {
// .. This is where stuff gets done ..
}
}
}
// No code here. (except another `namespace {...}`)
namespace {
$var = new NS\\MyClass();
}
// No code here. (except another `namespace {...}`)
更新好的,这就是我的
wp-content/themes/my-theme/includes/MyClass.php
:
<?php
namespace NS;
class MyClass {
public function __construct() {
add_action( \'init\', array( $this, \'getStuffDone\' ) );
add_filter( \'the_content\', array( $this, \'test\' ) );
}
public function getStuffDone() {
error_log( __METHOD__ . \' was called\' );
}
public function test( $content ) {
return __METHOD__ . \' in the_content.<hr>\' . $content;
}
}
$var = new MyClass();
我把
wp-content/themes/my-theme/functions.php
:
require_once get_template_directory() . \'/includes/MyClass.php\';
尝试一下,看看它是否对你有效,因为它对我很有效:
你会看到NS\\MyClass::test in the_content.
在帖子内容中(只需访问任何一篇帖子)。
你会看到NS\\MyClass::getStuffDone was called
添加到error_log
文件或wp-content/debug.log
如果已启用WP_DEBUG_LOG
.