我这边写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
真是想哭了。。。
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']);
......
}
这种繁琐的代码,写的要吐血了。。。求大家指导。。。
1
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的函数 全部用这个也可以。。。 |
2
whatisnew 2015-05-18 18:03:00 +08:00
我真心觉得他这个 Docblock Annotations 丑的无敌,用 yaml 或者 xml 其他也是丑的无敌。。。php 无解
|
3
mahone3297 OP @myc0210 抱歉,确实是我打错了,是分别setX1,setX2,setX3
》感觉你需要的是一个智能的IDE。。。而不是如何优雅的编码。因为人家就是这么用的。你要如何优雅。 你说的,好像也有点道理。。。但是,我觉得,也可以考虑使用 __get 这种magic method去处理。。。 问下,你是用symfony的么?有什么best practice分享下? |
4
mahone3297 OP @myc0210 你会在constructor里写这些set函数吗?其实不在构造函数里写也可以,在外部生成这个entity的地方,分别去调用各个setXX函数。但是我感觉,写在construct里好像比较好。
|
5
mahone3297 OP @whatisnew 相比于yaml,xml,我觉得,写成annotation算是漂亮的了。。。
|
6
myc0210 2015-05-18 22:06:29 +08:00
。。。没诶= =我用yii2。。。
|
7
thenbsp 2016-03-17 20:49:46 +08:00 1
@mahone3297 Symfony Best Practices http://symfony.com/doc/current/best_practices/index.html
|
8
mahone3297 OP @thenbsp 看过,然而并没有解答我的问题。。。
|