我正在尝试使用类和静态函数命名我的插件函数。我收到了错误:
致命错误:构造函数Read_Time :: read_time()在第41行的/Applications/MAMP/htdocs/Wordpress/wp-content/plugins/readtime/readtime.php中不能是静态的
class Read_Time {
public $options;
static public function init() {
add_filter('wp_meta', __CLASS__ . '::post_text');
}
static private function post_text() {
if(is_single()) {
global $post;
$content = $post->post_content;
echo("<h1>" . self::read_time($content) . "</h1>");
}
}
static private function word_count($to_count) {
return str_word_count($to_count);
}
static private function read_time($content) {
$wpm = 200;
$int_minutes = ceil( self::word_count($content) / $wpm );
if($int_minutes == 1) {
return $int_minutes . " minute";
}
else {
return $int_minutes . " minutes";
}
}
}
add_action('init', 'Read_Time::init');
有人能告诉我我做错了吗?
答案 0 :(得分:1)
PHP将您的方法read_time
解释为类Read_Time
的构造函数,因为它不区分大小写。构造函数不能是静态的。
From the online documentation:
从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。此更改不会影响非命名空间的类。
示例#2命名空间类中的构造函数
<?php
namespace Foo;
class Bar {
public function Bar() {
// treated as constructor in PHP 5.3.0-5.3.2
// treated as regular method as of PHP 5.3.3
}
}
?>
P.S。如果你真的使用PHP的版本&lt; 5.3.3,你应该强烈考虑升级。很多已经改变,旧版本可能有未修补的错误。