编辑:我添加screenshot实际错误,作为证明这就是发生的事情。
请注意,$ post_id和$ id属性未定义,因为父Y_CF
类具有魔术__get()
方法,但同样 - 它在子类中不可用。
我已经遇到了很多问题(包括一个问题,其中PHP几乎只是忽略了一个包含文件的一部分,即使我在那里扔了一堆随机字符,这会导致致命的错误),但我终于找到了一个问题: 我有两个类 - 父类和主类。 父类是抽象的,并且有一个工厂方法,它根据传递给它的参数返回不同的子类。 奇怪的是,有了一个的子类 - 它没有父类的方法。我只发布相关的代码片段
abstract class Y_CF {
// even if "public", it doesn't work
protected function parse_attributes( $attributes, $core_atts = array() ) {
$this->__settings['attributes'] = wp_parse_args( $core_atts, $attributes );
}
}
class Y_CF_Text extends Y_CF {
public function __construct( $settings ) {
parent::__construct( $settings );
// This is false
var_dump( method_exists( $this, 'parse_attributes' ) );
$this->parse_attributes( $this->attributes, array(
'id' => "Y_field_{$this->id}",
'class' => esc_attr( 'yotta-text-input ' . $this->class ),
'type' => ! empty( $this->attributes['type'] ) ? $this->attributes['type'] : 'text',
'value' => $this->format_value( $this->value ),
'name' => $this->gen_name(),
) );
}
}
正如您所看到的,我的主要课程是Y_CF
,我用Y_CF_Text
扩展它。
请注意,我已经在我的本地服务器(ubuntu 14)上尝试了此代码,它运行正常(应该如此)。
我怀疑问题出在服务器配置的某个地方,但我不知道在哪里。
到目前为止我做了什么:
所有这些都没有任何效果。
我也浏览了整个互联网,无法找到任何远程模仿我情况的东西。
答案 0 :(得分:1)
嗯,我现在觉得非常倒霉:)
作为最后的手段,我开始将每个类放在他们自己的文件中。我到了主班,突然遇到以下错误:
<b>Parse error</b>: syntax error, unexpected end of file in <b>/path/to/site/wp-content/plugins/yotta-util/lib/class-y-cf.php</b> on line <b>291</b><br />
我喜欢什么?!所以,我开始浏览整个文件,最后我将问题指向了该类的单个方法。当我滚动到方法的末尾时,我看到了:
{some javascript code}
</script>
<?
注意缺少的&#34; php&#34;问号之后的部分 - 所有这些问题都来自哪里。单个开口标签输入错误。
现在,我通常不会使用短标签,但我猜大多数服务器已经配置好正确处理它们,所以我从来没有遇到过任何问题。但我现在正在处理的服务器已关闭它们。
不知何故,这不仅仅是触发致命错误或任何事情,而只是造成了令人费解的混乱局面。
所以最后 - 这只是一个错字让我头晕了至少6个小时。