优秀的设计思想应该是应该以对象的角度看待事物,分析业务,而不是临散的属性,随意的数组。而你在附属于框架,服务于业务时,势必要做些妥协。
PHP数组传递
之前在阅读go语言代码时,发现go语言中的结构体和C#语言中的实体使用思路有很大相似之处。
c#实体
层次之间参数传递
层次之间参数传递集中反映了数组与对象的差别
按照PHP开发者经验和习惯,层次之间传递的是数组,优点自然是方便,灵活,缺点是对于方法签名来说缺少固定的业务语义约束,不明确。
按照Java或者c#严格面向对象语言开发者的经验习惯,层次之间传递的是对象或者实体,实体可以作为容器在层次之间传递,而没有层次给予的职责约束。也就是在传统的三层开发模式中,任何一层都可以使用实体,实体包装的是对象属性。
关于实体和模型的区别不在这篇文章的讨论范围内,后续我会单独写文章叙述这两个概念以及用法的区别。
以免引起语言争论,这里补充一个观点,语言之间各有所长,应该使用到最适合的场景上。应该看到每种语言的优势,而不是做无谓的比较