|
|
1
0
由于每个请求只有一个用户,因此对于程序的每次运行,将“用户”设置为单例类,如下所述: http://php.net/manual/en/language.oop5.patterns.php 这将为其他类提供一种引用当前用户的方法,而不存在访问错误实例的机会,因为只有一个实例。 免责声明: 是的,我知道歌手经常被用在错误的地方是为了错误的目的,有些人倾向于把这个问题归咎于模式,而不是那些把它误用为一些臭代码的人。 不过,这是Singelton模式的一个非常好的用例。 |
|
|
2
1
我认为对上述解决方案的最佳补救方法是使用一个名为依赖注入的概念,通过这个概念,您可以编写一个额外的类,它将依赖注入请求类(在本例中是一个对象)。大多数现代开发人员将坚持使用这种将依赖项注入其应用程序的技术,因为这将使: 松散耦合的程序——由于依赖关系是由第三类注入的,因此不需要在程序逻辑中硬编码依赖关系。 可维护代码——这是OOP范式中最吸引人的特性。这在涉及大规模项目时尤其如此。 内存管理-作为一个开发人员,您可以根据您的规范要求自由地管理内存。 |
|
|
3
0
“全球化”通过将它放入会话变量或cookie来实现全球化,这是一个非常坏的习惯,它会导致紧密耦合的库依赖于在类外设置的任意变量。一般来说,会话变量也可以因为其他原因而远离它们。 将变量作为参数传递给任何类都是最好的方法。布局类中有呈现(输出)它的方法吗?您可能需要向该方法添加$data参数,该参数接受可在布局中使用的关联数据数组。 |
|
|
4
0
我个人会使用一个注册类(singleton)并在那里注册用户,以便布局访问。这样,您只需要将注册表的一个实例传递到布局。 用户类不是布局构造的组成部分,因为它只与布局有关,所以我不会在构造函数中传递它。 另一种方法是使用控制器协调视图和模型之间的交互。每当创建新的控制器时,缓冲它的输出。然后,在渲染时,取消缓冲内容,并将其分配给视图的属性(或属性数组),然后可以对其进行渲染。您可能不需要将实际的模型类传递给视图/布局——只需要它的输出。 |
|
|
5
0
使用注册表模式。没必要让它成为单身汉,每个人都在胡说八道。
现在
|
|
|
simply lemon · python上链表的添加方法 1 年前 |
|
|
Anonymous · 为什么在这个例子中self和类名的用法不同? 1 年前 |
|
|
P N Singh · 在CPP Oops中调用对象而不创建它 1 年前 |
|
|
Muthuraj · 如何创建一个通用工厂来创建某种类型的实例[重复] 2 年前 |
|
|
Andy Votava · 从父类定义调用学生方法 2 年前 |