CodeIgniter 4:定义/包含"globally available"数组和函数



我想定义一些可以访问的数组和函数"全球";在所有控制器/模型/视图中(在代码点火器4中(。例如,我需要定义一组可用货币:

$currencies = array("EUR","USD"); 

还有一些功能,例如根据用户的国家/地区显示不同的数字,因为有些功能使用小数点或逗号。

我将把这些数组和函数放在哪里?我将如何包括它们,以便它们在所有控制器/模型/视图中都可用?

我研究过你可以在app/config/constants.php中定义常量,但它似乎不是数组和函数的地方。

我将在这里尝试将事实和观点区分开来。

。。。定义一些我可以访问的数组和函数";全球";在里面所有控制器/模型/视图。。。

  1. 使用继承-您可以创建控制器和模型扩展的"基类";这些"基类"扩展了CodeIgniter的控制器或模型,并在所有的控制器或模型中定义了您想要的任何方法。

    您创建的每个扩展其各自"基类"的控制器或模型都可以访问您在"基类"中定义的任何内容(非私有(。

  2. 使用名称空间-事实上,这就是它的力量。如果你真的需要一些东西,你可以从";"任何地方";,创建一个库或类似的东西。它是什么并不重要,只要它在一个定义的名称空间内即可。

    然后,当你需要使用这个库(或其他什么(时,你可以创建一个实例并使用它。如果你不想真正创建一个对象,你甚至可以使用静态成员。

  3. 使用"帮助者"-为了保持程序性,您既可以扩展现有CI4帮助者的功能,也可以创建自己的帮助者。你也可以在这方面找到其他资源。

。。。您可以在app/config/constants.php中定义常量,但它没有似乎是放置数组和函数的地方。

Constants.php中定义数组常量是可以的,只要您实际定义的是一个常量;$currencies = array("EUR","USD");不是常数。

但是,您对该文件中的函数是正确的;你不应该那样做。


基于普遍共识的快速意见:

控制器的目的是正确路由请求;Views(广义上(的目的是渲染网页。这两者都不是真正执行任何业务逻辑的地方;因此流行语";胖模特,瘦控";。

如果您认为需要访问或执行模型之外的业务逻辑,请停下来问问自己,为什么没有在模型层中发生这种情况。

相关内容

  • 没有找到相关文章

最新更新