Php 在Laravel中从文件读取阵列的最佳实践
我的问题可能很愚蠢。但我需要澄清我的概念 在Laravel中有几种读取数组的方法。像Php 在Laravel中从文件读取阵列的最佳实践,php,laravel,Php,Laravel,我的问题可能很愚蠢。但我需要澄清我的概念 在Laravel中有几种读取数组的方法。像config()变量、.env函数、trans()函数、文件读起来像.csv、.txt、.json等 可能它们都有不同的目的。 但我需要知道从控制器读取阵列数据的最佳实践是什么。给出了一个例子。谢谢 示例数组: [ "mohammad" => [ "physics" => 35, "maths" => 30,
config()
变量、.env
函数、trans()
函数、文件读起来像.csv
、.txt
、.json
等
可能它们都有不同的目的。
但我需要知道从控制器读取阵列数据的最佳实践是什么。给出了一个例子。谢谢
示例数组:
[
"mohammad" => [
"physics" => 35,
"maths" => 30,
"chemistry" => 39
],
"qadir" => [
"physics" => 30,
"maths" => 32,
"chemistry" => 29
],
"zara" => [
"physics" => 31,
"maths" => 22,
"chemistry" => 39
]
]
有serialize()
和unserialize()
函数可以创建/加载任何php值的文本表示形式
但是,只有当数据在运行时变化不大时,我才会使用文件来存储数据。例如,用于缓存或配置目的。否则,当多个会话试图同时读/写文件时,您可能会遇到冲突,并产生奇怪的错误
对OP部分评论的回应:
Laravel使用解释的配置文件,即在框架启动后由PHP解析。使用这样的文件可以使用一些简洁的语言特性,比如类注入,允许对配置文件进行版本设置,并使开发人员的生活更加轻松,因为配置相关的框架内容存储在代码中
对于运行时、会话特定的内容,请使用数据库。有一个$\u会话[]
变量用于存储临时数据。根据您的配置,这些值可以存储在内存或文件中,由PHP处理。有serialize()
和unserialize()
函数可以创建/加载任何PHP值的文本表示形式
但是,只有当数据在运行时变化不大时,我才会使用文件来存储数据。例如,用于缓存或配置目的。否则,当多个会话试图同时读/写文件时,您可能会遇到冲突,并产生奇怪的错误
对OP部分评论的回应:
Laravel使用解释的配置文件,即在框架启动后由PHP解析。使用这样的文件可以使用一些简洁的语言特性,比如类注入,允许对配置文件进行版本设置,并使开发人员的生活更加轻松,因为配置相关的框架内容存储在代码中
对于运行时、会话特定的内容,请使用数据库。有一个
$\u会话[]
变量用于存储临时数据。根据您的配置,这些值可以存储在内存或文件中,PHP会处理它们。只是对上面的答案进行了一点小小的更正:作者询问了读取数据的问题,因此他们可能需要取消序列化(file\u get\u contents('data.file')但是,我确实支持上面的答案,因为从文件系统中存储和读取某些内容确实是个坏主意,这不仅是因为并发读/写,还因为速度/文件访问/缓存问题 只是对上述答案的一个小更正:作者询问了读取数据的问题,因此他们可能需要取消序列化(file_get_contents('data.file'))但是,我确实支持上面的答案,因为从文件系统中存储和读取某些内容确实是个坏主意,这不仅是因为并发读/写,还因为速度/文件访问/缓存问题 Laravel在引擎盖下使用var\u export()
以这种方式缓存配置:
$config = [
'myvalue' => 123,
'mysub' => [
'mysubvalue' => true
]
];
$code = '<?php return '.var_export($config, true).';'.PHP_EOL;
在代码中,您必须简单地包含该文件,以获得您的结构
$myconfig = require config_path('myconf.php');
dd($myconfig);
或者(如果是配置文件)调用
要以Laravel样式检索值,可以使用Illumb\Config\Repository类
例如
或
希望这将澄清和帮助Laravel在引擎盖下使用var\u export()
以这种方式缓存配置:
$config = [
'myvalue' => 123,
'mysub' => [
'mysubvalue' => true
]
];
$code = '<?php return '.var_export($config, true).';'.PHP_EOL;
在代码中,您必须简单地包含该文件,以获得您的结构
$myconfig = require config_path('myconf.php');
dd($myconfig);
或者(如果是配置文件)调用
要以Laravel样式检索值,可以使用Illumb\Config\Repository类
例如
或
我不知道这是否是最佳实践,但我可以肯定,它不仅在Laravel中有效,而且在任何其他PHP项目中都有效
也就是说,要从文件中读取数组,您所要做的就是将返回的数组分配给变量
数组必须从包含的文件中返回,这很重要
例子:
path/to/my/array_file.php
<?php
return [
'resource' => [
'delete' => 'Are you sure you want to delete this resource?',
'updated' => 'Data for this resource has been successfully updated',
'created' => 'Data for this resource has been successfully created',
'deleted' => 'Data for this resource has been successfully deleted',
],
];
现在$messages只是另一个php数组
如果在Laravel中使用var_dump($messages)或dd($messages),则会得到如下结果:
$messages = include('path/to/my/array_file.php');
array:2 [▼
"resource" => array:4 [▼
"delete" => "Are you sure you want to delete this resource?"
"updated" => "Data for this resource has been successfully updated"
"created" => "Data for this resource has been successfully created"
"deleted" => "Data for this resource has been successfully deleted"
]
]
我不知道这是否是最佳实践,但我可以向您保证,它不仅适用于Laravel,而且适用于任何其他PHP项目
也就是说,要从文件中读取数组,您所要做的就是将返回的数组分配给变量
数组必须从包含的文件中返回,这很重要
例子:
path/to/my/array_file.php
<?php
return [
'resource' => [
'delete' => 'Are you sure you want to delete this resource?',
'updated' => 'Data for this resource has been successfully updated',
'created' => 'Data for this resource has been successfully created',
'deleted' => 'Data for this resource has been successfully deleted',
],
];
现在$messages只是另一个php数组
如果在Laravel中使用var_dump($messages)或dd($messages),则会得到如下结果:
$messages = include('path/to/my/array_file.php');
array:2 [▼
"resource" => array:4 [▼
"delete" => "Are you sure you want to delete this resource?"
"updated" => "Data for this resource has been successfully updated"
"created" => "Data for this resource has been successfully created"
"deleted" => "Data for this resource has been successfully deleted"
]
]
我想从Laravel项目中的文件导入一个简单数组。我将文件保存在resources/appData中,为了加载阵列,我的结果如下:
$categories = include(resource_path('appData/categories.php'));
这将从“resources/appData/categories.php”中的文件加载数组,并将其保存到$categories变量中
该文件返回的数组类似于Laravel中的配置文件
<?php
return [
];
我想从Laravel项目中的文件导入一个简单数组。我将文件保存在resources/appData中,为了加载阵列,我的结果如下:
$categories = include(resource_path('appData/categories.php'));
这将从“resources/appData/categories.php”中的文件加载数组,并将其保存到$categories变量中
该文件返回的数组类似于Laravel中的配置文件
<?php
return [
];
你的意思是什么<