我写了一个类来设置和过期浏览器cookie.我试图将类公共变量设置为全局变量的值,以允许我静态使用类方法.基本上我想要做的就是删除重复的全局$settings
和$expire
和$domain
变量.
这是我的代码:
<?php
class cookies {
public static function set($name, $value, $date = false) {
global $settings;
$expire = ($date) ? $date : $settings['expire'];
$domain = str_replace('www.', '', $settings['domain']);
setcookie($name, $value, $expire, '/', $domain);
}
public static function clear() {
global $settings;
$domain = str_replace('www.', '', $settings['domain']);
setcookie('test1', '', 1, '/', $domain);
setcookie('test2', '', 1, '/', $domain);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
使用全局变量对于应用程序的灵活性,模块性和健全性非常不利.使用静态方法对于应用程序的模块化和灵活性非常不利.将两者结合使用是令人厌恶的.你怎么写一个可以像这样使用的类:
$cookies = new Cookies($settings['expire'], $settings['domain']);
$cookies->set(.., .., ..);
$cookies->clear();
Run Code Online (Sandbox Code Playgroud)
你会从这样一个合适的类结构开始:
class Cookies {
protected $expire,
$domain;
public function __construct($expire, $domain) {
$this->expire = $expire;
$this->domain = $domain;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后你使用$this->expire
而$this->domain
不是全局变量.
归档时间: |
|
查看次数: |
123 次 |
最近记录: |