Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Cookie类配置_Php_Arrays_Oop_Cookies - Fatal编程技术网

PHP Cookie类配置

PHP Cookie类配置,php,arrays,oop,cookies,Php,Arrays,Oop,Cookies,我正在编写一个cookie类,但希望将默认配置保留在一个单独的文件中,该文件只返回一个数组,原因与应用程序有关。不过,我想知道将配置数组放入类中的最佳方法是什么。我喜欢第一个实现,因为它更干净,但是我想知道第二个实现是否被认为是一个糟糕的实践?我不希望类直接知道或依赖于外部文件,但不确定传递它的最佳方式 /* config/Cookie.php */ return [ 'expire' => null, 'path' => null, 'domai

我正在编写一个cookie类,但希望将默认配置保留在一个单独的文件中,该文件只返回一个数组,原因与应用程序有关。不过,我想知道将配置数组放入类中的最佳方法是什么。我喜欢第一个实现,因为它更干净,但是我想知道第二个实现是否被认为是一个糟糕的实践?我不希望类直接知道或依赖于外部文件,但不确定传递它的最佳方式

/* config/Cookie.php */
return [
    'expire'   => null,
    'path'     => null,
    'domain'   => null,
    'secure'   => false,
    'htpponly' => false
]
我在考虑用以下两种方式之一构建它:

第一种方法看起来更简洁,但我不确定如何获得默认配置项

class Cookie
{
    protected $name;
    protected $value;
    protected $expires;
    protected $path;
    protected $domain;
    protected $secure;
    protected $httponly;

    public function __construct($name, $value, $expire = null, $path = null, $doamin = null, $secure = false, $httponly = false)
    {
        $this->name = $name;
        $this->value = $value;
        $this->expire = $expire
        // ...
    }
或者,第二种方法是将配置数组传递到构造函数中

class Cookie
{
    protected $name;
    protected $value;
    protected $config = array(
        'expire    => null,
        'path'     => null,
        'domain'   => null,
        'secure    => false,
        'httponly' => false
    );

    public function __construct($name, $value, array $config = null)
    {
        $this->name = $name;
        $this->value = $value;
        $this->config = array_merge($this->config, $config);
    }

    // ... $name and $value getters

    public function getExpire()
    {
        return $this->config['expire'];
    }

在数组中存储类属性会被认为是不好的做法吗?

Laravel会这样做。除非它变得杂乱无章,否则我不这么认为。这个问题主要是基于观点的,因为它是关于你认为/想要实现它的方法的。我个人会选择第二个选项,因为我更喜欢配置数组/对象而不是许多变量。我倾向于沉溺于思考小事,这有助于获得他人的意见