最佳连接方式 类
Best way to connect classes
所以,我没有使用任何框架,而是使用 PHP 在 MVC 架构上开发一个系统,并且有几个组件。其中之一是 Sanitize,用于过滤变量。
我遇到的问题是,如何更好地清理变量?
更容易在示例中显示:
class Sanitize {
public function sanitizeString($string) {
return filter_var($string, FILTER_SANITIZE_STRING);
}
}
然后我希望这个 class 在模型和控制器以及几乎所有文件上执行。不要每次都写 $sanitize = new Sanitize;我习惯于添加一个 public __construct 函数来创建一个 sanitize var.
private $sanitize;
public function __construct() {
$sanitize = new Sanitize();
}
然后我就在我的函数中使用
调用它
$string = $this->sanitize->sanitizeString($string);
问题是我有点偏执,所以我在每个 class 中自动连接一个清理 class,特别是模型,以便在数据进入数据库时清理数据。所以这里发生了类似递归的事情,并且有一个一遍又一遍地创建的 var。例如,控制器将使用构造创建一个 sanitize class。然后在一个方法中,我将在模型用户中创建新的 class,用户 class 也在其中创建一个清理,以及来自 Cookies 和 Access classes 的一些数据,两者都来自在其中创建消毒。
所以我调用了 1 个方法,但它创建了 4 个重复的 sanitize,有些甚至不需要...
最佳做法是什么?我做对了吗?
提前致谢!
快速抓取一种解决方案:
<?php
interface ISanitizedValue {
public function value();
}
class CSanitizedLogin implements ISanitizedValue {
private $_rawValue;
public function __construct($value){
$this->_rawValue = $value;
}
public function value(){
// sanitizing
}
}
class CSomeClass {
// force to use ISanitizedValue
public function __construct(ISanitizedValue $login){}
}
$login = new CSanitizedLogin($_GET['login']);
$example1 = new CSomeClass($login);
$example2 = new CSomeClass($login);
?>
所以,我没有使用任何框架,而是使用 PHP 在 MVC 架构上开发一个系统,并且有几个组件。其中之一是 Sanitize,用于过滤变量。
我遇到的问题是,如何更好地清理变量?
更容易在示例中显示:
class Sanitize {
public function sanitizeString($string) {
return filter_var($string, FILTER_SANITIZE_STRING);
}
}
然后我希望这个 class 在模型和控制器以及几乎所有文件上执行。不要每次都写 $sanitize = new Sanitize;我习惯于添加一个 public __construct 函数来创建一个 sanitize var.
private $sanitize;
public function __construct() {
$sanitize = new Sanitize();
}
然后我就在我的函数中使用
调用它$string = $this->sanitize->sanitizeString($string);
问题是我有点偏执,所以我在每个 class 中自动连接一个清理 class,特别是模型,以便在数据进入数据库时清理数据。所以这里发生了类似递归的事情,并且有一个一遍又一遍地创建的 var。例如,控制器将使用构造创建一个 sanitize class。然后在一个方法中,我将在模型用户中创建新的 class,用户 class 也在其中创建一个清理,以及来自 Cookies 和 Access classes 的一些数据,两者都来自在其中创建消毒。
所以我调用了 1 个方法,但它创建了 4 个重复的 sanitize,有些甚至不需要...
最佳做法是什么?我做对了吗?
提前致谢!
快速抓取一种解决方案:
<?php
interface ISanitizedValue {
public function value();
}
class CSanitizedLogin implements ISanitizedValue {
private $_rawValue;
public function __construct($value){
$this->_rawValue = $value;
}
public function value(){
// sanitizing
}
}
class CSomeClass {
// force to use ISanitizedValue
public function __construct(ISanitizedValue $login){}
}
$login = new CSanitizedLogin($_GET['login']);
$example1 = new CSomeClass($login);
$example2 = new CSomeClass($login);
?>