Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 与MySQL交互的好方法?_Php_Mysql_Class_Object - Fatal编程技术网

Php 与MySQL交互的好方法?

Php 与MySQL交互的好方法?,php,mysql,class,object,Php,Mysql,Class,Object,所以我现在拥有的是SQL中的表,表连接不同的表,例如 Table1: id, identifier, other_attributes Table2: id, identifier, other_attributes Table3: id, table1_id, table2_id // this connects table 1 and 2. 因此,我为table1和table2创建了一个对象,允许类似$table=newtable1($id)和$table->getName()或$tabl

所以我现在拥有的是SQL中的表,表连接不同的表,例如

Table1: id, identifier, other_attributes
Table2: id, identifier, other_attributes
Table3: id, table1_id, table2_id // this connects table 1 and 2.
因此,我为table1和table2创建了一个对象,允许类似
$table=newtable1($id)
$table->getName()
$table->setName()

然而,我不太确定这是否是最好的方法?如果是,最好为表3创建另一个对象吗?还是有更好的方法

最后,我所做的是组合getter和setter,意思是
$table->name('somename')
将设置名称,并且
$table->name()将获得它。把它们结合起来明智吗?还是最好把它们分开


Hosh

如果我实现了这个,我就不会像您那样使用
name('somename')
name()
作为setter和getter。它使记忆函数变得容易,但在我看来,它也使犯和发现编码错误变得容易得多。您可能会意外地键入.name(),而实际上是指.name(“”)等,在代码中查找此类错误可能会很困难


我会选择
.getName()
.setName('somename')
我自己。也许我有偏见-我有很强的Java背景。

如果我实现了这一点,我不会像您那样使用
name('somename')
name()
作为setter和getter。它使记忆函数变得容易,但在我看来,它也使犯和发现编码错误变得容易得多。您可能会意外地键入.name(),而实际上是指.name(“”)等,在代码中查找此类错误可能会很困难


我会选择
.getName()
.setName('somename')
我自己。也许我有偏见——我有很强的Java背景。

我会为每个真正使用过的对象使用对象(正如名称所述…)

例如,我有一个单用户类,它使用来自三个不同DB表的数据。n:m关系表应该按照它们的名称来实现。如果有一个“user\u has\u address”表,我也会在user类上实现SQL查询(该类使用address类)。但是像“company\u has\u employees”这样的表中的数据将驻留在company类中


在PHP中如何命名getter和setter是一个编码惯例的问题(例如,在您的公司或您自己的公司)。在PHP中使用魔术方法(如)时根本不需要它们,但正如@JJ所指出的,这将使测试更容易。

我会为每个真正使用的对象使用对象(如名称所述…)

例如,我有一个单用户类,它使用来自三个不同DB表的数据。n:m关系表应该按照它们的名称来实现。如果有一个“user\u has\u address”表,我也会在user类上实现SQL查询(该类使用address类)。但是像“company\u has\u employees”这样的表中的数据将驻留在company类中


在PHP中如何命名getter和setter是一个编码惯例的问题(例如,在您的公司或您自己的公司)。在PHP中使用magic方法(如)时根本不需要它们,但正如@JJ所指出的,这将使测试更容易。

我还强烈建议使用getName()和setName()。原因很简单:一个好的IDE可以避免打字工作

例如,您键入:

$name = 'str';
$table->setN

然后代码完成可能会导致$table->setName($name)。如果只有name($name=null)方法,IDE无法确定是否建议参数。此外,使用setX()/getX()非常常见,这有助于理解您的代码。

我还强烈建议使用getName()和setName()。原因很简单:一个好的IDE可以避免打字工作

例如,您键入:

$name = 'str';
$table->setN

然后代码完成可能会导致$table->setName($name)。如果只有name($name=null)方法,IDE无法确定是否建议参数。此外,使用setX()/getX()非常常见,这有助于理解您的代码。

Ahh使用u set()和u get()听起来像是一个替换getter和setter的想法,可能也会使代码的其余部分更整洁。感谢您提供的关系信息。我不会在更大程度上使用魔法方法,因为它不允许您在IDE中使用自动完成,即您将浪费时间并且容易出错。此外,您无法确定PHPDoc可以提供的确切返回类型/值(例如“整数或-1”)。@str“您无法确定确切的返回类型”如果这是一项要求,请不要使用诸如PHP之类的非类型化语言,而是坚持使用Java,例如…@feeela With PHP您永远无法确定返回类型,没错。但是您应该知道使用过的方法应该返回什么。如果您有一个getNumber(),那么可能需要一个整数作为结果。但是该方法可能会返回null或-1或类似的值。如果没有PHPDoc,您永远不知道应该返回什么,也无法区分不同的结果。啊,使用_set()和_get()听起来像是一个替换getter和setter的想法,可能会使其余的代码更整洁。感谢您提供的关系信息。我不会在更大程度上使用魔法方法,因为它不允许您在IDE中使用自动完成,即您将浪费时间并且容易出错。此外,您无法确定PHPDoc可以提供的确切返回类型/值(例如“整数或-1”)。@str“您无法确定确切的返回类型”如果这是一项要求,请不要使用诸如PHP之类的非类型化语言,而是坚持使用Java,例如…@feeela With PHP您永远无法确定返回类型,没错。但是您应该知道使用过的方法应该返回什么。如果您有一个getNumber(),那么可能需要一个整数作为结果。但是我可以用这个方法吗