我想将一些数据(来自定制控制器插件)写入我的网站公共目录的'messages'子目录下的文件。ZF2公共目录的真实路径
定制控制插件很简单:
<?php
namespace Main\Service;
class MessageWriter
{
public $data = array();
public function __set($name, $value)
{
$this->data[$name] = $value;
}
public function write_message()
{
$this->time = time();
$data = serialize($this->data);
$filename = time() . '_' . rand(1000, 9999);
@file_put_contents('/var/www/public/messages/' . $filename, $data);
}
}
?>
我有两个小问题/问题:
- 如何避免路径的硬编码?没有保存公共目录(/ var/www/public)的真实路径的ZF2配置变量。
- 在ZF2中是否有用于编写文件的类,或者使用file_put_contents和类似的文件函数可以吗?
非常感谢!
迈克
谢谢你的帮助! – user2939345
这一切路径都是相对的东西都不错,直到我不必使用它太多。想象一下,你必须在几个插件,控制器(写入,打开文件,检查文件是否存在等)中对公共目录的名称(在这种情况下:public)进行硬编码。然后 - 出于某种原因 - 您必须将其从公共更改为public_new。因此,您必须在任何地方更改硬编码值,代码的便携性会降低。如果拥有一些用于保存公用目录名称的全局配置变量,将会非常好。 – user2939345
如果您想沿着这条路线走,而不是为公共文件夹设置一些全局配置,我会为消息添加一个配置路径,然后您可以将它注入到MessageWriter服务中。 –