我有一个简单的表,其中包含以下列
Table 'Names'
id (PRIMARY KEY)
name (VARCHAR 250)
strikes (SMALLINT)
根据某些业务规则(此处不相关),针对特定“id”的“罢工”将会增加。我可以写一个非常简单的MySql语句来做到这一点:
UPDATE TABLE names
SET strikes = strikes + 1
WHERE id = $id
但是,由于该表具有一个名为“Names”的类的相应业务对象,我必须这样做:
$objName = new Names($id); //initiate an object with id = $id
$numStrikes = $objName->get("strikes"); //get the current strikes against this id
++$numStrikes; //increment the number of strikes
$objName->set("strikes",$numStrikes); //set the strikes against id = $id
$objName->save(); //save the object in underlying DB
上述“面向对象的方法”老实地感觉就像我试图通过从我的头后面拉我的手臂来抓住我的鼻子!这真的是正确的方法还是有更好的方法来做到这一点?我想在PHP中坚持使用OOP,但前提是它有意义!
答案 0 :(得分:2)
如果它只是简单的话,我不会让它面向对象。虽然我建议在add_strike()
类中添加Names
方法,该方法将运行您运行的相同脚本。