【发布时间】:2015-09-07 08:50:55
【问题描述】:
我有一个用于数据库元素的通用父 item 类,例如
class item {
function set($i = '') {
//set element in database
}
function get($id = '') {
//get element in database
return $item;
}
}
我有不同的类来实现项目的父项,例如 users 和 events - 当我在用户内部调用 set 方法来处理类事件时,例如
class users extends item {
function dothis() {
events::set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
就像我写的一样
class users extends item {
function dothis() {
self::set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
试图在用户表中插入事件,所以我必须以这种方式实例化类
class users extends item {
function dothis() {
$e = new events();
$e->set(array('start' => 'today', 'end' => 'tomorrow'));
}
}
我做错了吗?有没有办法避免实例化?
编辑 - 我的框架中的所有类都以静态方式调用,不需要 new 或 $this,而且效果很好。
【问题讨论】:
-
All the classes in my framework are called in a static way ... it works perfectly- 显然不是 =)。 -
@GiobiFasoli static 关键字不是可选的。您目前正在忽略(甚至可能不知道?)警告ala
Non-static method Foo::set() should not be called statically- 打开错误报告; 总是在显示 E_ALL 的情况下进行开发。你在问题//get element in database中没有显示的代码就是问题所在,如果你想要一个具体的答案,显示一些具体的代码和一个具体的问题。 -
我并不关心你重写代码,尽管认识到你已经遇到和正在创造的问题(例如,我将在生产中工作,甚至不会麻烦自己阅读错误日志)将符合您的利益。我关心你把问题变成可以回答的东西——你没有那样做。问题缺少重要的代码,并且不包含实际的问题陈述(我这样写的代码就像我写的那样是不是问题陈述它是对什么的猜测/解释实际发生,并没有帮助)。
-
:( 你没抓住重点 - 你无法通过编辑标题来解决我的 cmets。显示更多代码和一个实际问题。我试过了,祝你好运.
-
@deceze 作为记录,我正在阅读这篇文章,我明白了。我特别公开地向 AD7six 道歉,因为你太粗鲁了:你已经非常有耐心了!
标签: php class static parent siblings