让我说我是一个类,但我的脚本中有条件,这可能意味着类方法实际上从未被使用过。
示例:
$rr = new RecipientRepo($db);
if ($_GET['action'] == 'test1') {
$rr->showForm1();
}
else if ($_GET['action'] == 'test2') {
$rr->showForm2();
}
如果没有满足条件,则永远不会调用类的方法。
这是不好的做法吗?我更倾向于在每个条件下初始化课程。
任何答案都将不胜感激。
答案 0 :(得分:2)
仅在$_GET
中设置密钥时才初始化类。你可以这样做 -
if (!empty($_GET['action'])) {
$rr = new RecipientRepo($db);
if ($_GET['action'] == 'test1') {
$rr->showForm1();
}
else if ($_GET['action'] == 'test2') {
$rr->showForm2();
}
}
如果你想让它更具体,那么 -
if (!empty($_GET['action']) && in_array($_GET['action'], array('test1', 'test2'))) {
答案 1 :(得分:1)
如果初始化类是资源密集型的,则可以根据需要进行初始化。如果RecipientRepo
对象与表单提交密切相关,您甚至可以在对象中添加静态方法以确定是否需要创建它:
public static function formPosted() {
return (
isset($_GET['action']) &&
in_array($_GET['action'], array(
'test1',
'test2'
))
);
}
然后,在您的主窗体中,您可以调用它来确定是否需要实例化对象:
if (RecipientRepo::formPosted()) {
$rr = new RecipientRepo($db);
if ($_GET['action'] == 'test1') {
$rr->showForm1();
}
else if ($_GET['action'] == 'test2') {
$rr->showForm2();
}
}
在方法中包含此逻辑可确保在正确条件正确时仅实例化对象。它还封装了用于确定何时以易于阅读的结构执行此操作的逻辑。