symfony doctrine 如何优雅的编码

2015-05-18 17:35:24 +08:00
 mahone3297

我这边写php,然后用的是symfony框架,orm用的是doctrine。
1. 看看php写1对多的映射
/**
* @ORM\OneToMany(targetEntity="KdtOrder", mappedBy="kdtTrade", cascade={"persist"})
/
private $kdtOrders;
另一边多对1
/
*
* @ORM\ManyToOne(targetEntity="KdtTrade", inversedBy="kdtOrders", cascade={"persist"})
*/
private $kdtTrade;

再看看ror
class Supplier < ActiveRecord::Base
has_one :account
end

class Account < ActiveRecord::Base
belongs_to :supplier
end
真是想哭了。。。

  1. 再说说constructor的问题 doctrine的话,我会在constructor函数中,这样写

public function __construct(array $params)
{
if (isset($params['x1'])) $this->setX1($params['x1']);
if (isset($params['x2'])) $this->setX1($params['x2']);
if (isset($params['x3'])) $this->setX1($params['x3']);
......
}

这种繁琐的代码,写的要吐血了。。。求大家指导。。。

2643 次点击
所在节点    问与答
8 条回复
myc0210
2015-05-18 17:57:47 +08:00
感觉你需要的是一个智能的IDE。。。而不是如何优雅的编码。因为人家就是这么用的。你要如何优雅。关于
if (isset($params['x1'])) $this->setX1($params['x1']);
if (isset($params['x2'])) $this->setX1($params['x2']);
if (isset($params['x3'])) $this->setX1($params['x3']);
是打错了吧 = =? 三个?$this->setX1?如果是这样你一个foreach不就搞定了。如果是SETX1,SETX2,SETX3那你就是得一个一个set 没办法。要不然你自己写个setParam的函数 全部用这个也可以。。。
whatisnew
2015-05-18 18:03:00 +08:00
我真心觉得他这个 Docblock Annotations 丑的无敌,用 yaml 或者 xml 其他也是丑的无敌。。。php 无解
mahone3297
2015-05-18 18:07:57 +08:00
@myc0210 抱歉,确实是我打错了,是分别setX1,setX2,setX3
》感觉你需要的是一个智能的IDE。。。而不是如何优雅的编码。因为人家就是这么用的。你要如何优雅。
你说的,好像也有点道理。。。但是,我觉得,也可以考虑使用 __get 这种magic method去处理。。。
问下,你是用symfony的么?有什么best practice分享下?
mahone3297
2015-05-18 18:09:41 +08:00
@myc0210 你会在constructor里写这些set函数吗?其实不在构造函数里写也可以,在外部生成这个entity的地方,分别去调用各个setXX函数。但是我感觉,写在construct里好像比较好。
mahone3297
2015-05-18 18:10:07 +08:00
@whatisnew 相比于yaml,xml,我觉得,写成annotation算是漂亮的了。。。
myc0210
2015-05-18 22:06:29 +08:00
。。。没诶= =我用yii2。。。
thenbsp
2016-03-17 20:49:46 +08:00
mahone3297
2016-03-17 22:13:29 +08:00
@thenbsp 看过,然而并没有解答我的问题。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX