我是cakephp的新手。我试图将json输出保存为webroot中的文件。我也想将文件读入数组中。CakePHP读取和写入json文件。
我知道我们可以使用json_encode($ array)将数组输出为json对象。但我坚持创建和阅读json文件到数组中。
我很感激任何帮助。
我是cakephp的新手。我试图将json输出保存为webroot中的文件。我也想将文件读入数组中。CakePHP读取和写入json文件。
我知道我们可以使用json_encode($ array)将数组输出为json对象。但我坚持创建和阅读json文件到数组中。
我很感激任何帮助。
//write
$json = '{"key":"value"}';
$file = new File('/path/to/file', true);
$file->write($json);
//read
$file = new File('/path/to/file');
$json = $file->read(true, 'r');
$json2array = json_decode($json);
感谢您的回答..您让它看起来很简单..我感谢你的帮助。我想知道我们是否可以将文件保存在webroot之外。谢谢。 – 2012-03-09 12:14:57
您可以将文件保存在php根文件夹的任何位置。 – cetver 2012-03-09 13:07:16
注:此代码属于您的模型或控制器的方法中。
尽管cetver的回答在技术上是正确的,但它不是很“cakey”。
对于CakePHP的具体我会做到以下几点:
$json = '{"key":"value"}';
$json2 = json_encode(array("a" => 1, "b" => 2));
$path = APP . '[YOUR FOLDER NAME]' . DS . 'json';
$path2 = APP . '[YOUR FOLDER NAME]' . DS . 'json2';
$jsonFromFile;
$json2FromFile;
//write
if(!file_exists($path))
file_put_contents($path, $json);
if(!file_exists($path2))
file_put_contents($path2, $json2);
//read
if(!file_exists($path))
$jsonFromFile = file_get_contents($path, true);
if(!file_exists($path2))
$json2FromFile = file_get_contents($path2, true);
说明:
快乐编码。
除了问题是关于如何读取平坦的json文件的内容。另外,对于你的答案是“cakey”,它应该包含一个在控制器或数据源中这样做的建议。 – 2016-06-17 18:14:05
OP没有提供他在哪里执行这个逻辑的上下文,那么为什么要限制我的答案呢?我的答案的“cakey”方面是利用Cake提供的常量来确保应用程序是从环境到环境的门户,对您的配置毫不关心。在提及我错过了我的答案的“读取”部分时,你是正确的。我会更新。 – pimbrouwers 2016-06-17 18:24:20
很酷。一个问题是,有太多的“CakePhp开发人员”将代码直接放入视图文件或跨多个控制器方法复制面食。不暗示Cake标准的解决方案并不真正描述Cake解决方案,而是通用解决方案(在这种情况下使用Cake常量)。 – 2016-06-17 22:26:47
您确定要将文件放入webroot中并可供普通大众查看吗?下面的答案显示了我认为回答你的问题的json_encode和json_decode的使用。 – Andy 2012-03-09 12:00:04
@Andy我知道它是可用的,但我不知道如何将它存储在webroot之外。我可以将它存储在webroot之外吗?我感谢任何帮助。 – 2012-03-09 12:13:17
嗨,当然可以。取决于你是否打算保留它,你可以将它存储在app/tmp /目录下的子目录中。不要使用webroot作为你的基本目录,而应考虑使用TMP或类似的东西(查看http://www.ossassociatesinc.com/Cakephp-manual/ch11s03.html)。只要确保你chmod目录允许Apache用户rw访问。 file_get_contents和file_put_contents不需要通过URL访问文件,并且可以采用路径名称(http://php.net/manual/en/function.file-get-contents.php) – Andy 2012-03-09 12:25:12