1
早上好相同的兩個對象,PHP:從類工作相互獨立
我想代碼在我的控制器看起來是這樣的:
<?php
$class = new sanitizeInput()
$string1 = $class -> input($_POST[name]) -> mysql_escape();
$string2 = $class -> input($_POST[age]) -> mysql_escape();
print "
String1: $string1 <br />
String2: $string2"
?>
這似乎與我的sanitizeInput類,任何對$ string2的更改都會應用於$ string1。 有什麼方法可以改變這個?我最好喜歡在課堂上做出改變,使我的控制器儘可能地容易閱讀。
當然,我知道我可以實例化兩次,但如果可能的話我想使用相同的對象。
這將是巨大的,如果我的課:
- 實例化一次,
- 設置輸入,
- 告訴它mysql_escape,並返回到__toString $字符串1。
- 設置輸入單獨離開$ string2,mysql_escape並將__toString字符串返回到$ string2。
編輯: 這是由評論請我的全碼:
$name = $sanitize -> setInput($name) -> stripTags() -> mySql() -> replaceLinks('[ En webadresse ble sensurert her ]') -> trimWhitespace();
$age = $sanitize -> setInput($age) -> stripTags() -> mySql() -> replaceLinks('[ En webadresse ble sensurert her ]') -> trimWhitespace();
class Sanitizer {
protected $_data;
public function setInput($input) {
$this -> _data = $input;
return $this;
}
public function stripTags($array = NULL) {
if (!is_null($array) and is_array($array)) {
$allowedTags = implode('', $array);
$this -> _data = strip_tags($this -> _data, $allowedTags);
}
else {
$this -> _data = strip_tags($this -> _data);
}
return $this;
}
public function mySql() {
$this -> _data = mysql_escape_string($this -> _data);
return $this;
}
public function replaceLinks($replacement = NULL) {
if (is_null($replacement)) {
$replacement = '[ Potential web-address censored here ]';
}
$this -> _data = preg_replace('~[a-z0-9:/._-]+\.(biz|com|edu|gov|info|mil|net|org|as|eu|no|se|uk)[/a-z]{0,}~i', $replacement, $this -> _data);
return $this;
}
public function trimWhitespace() {
$this -> _data = trim($this -> _data);
return $this;
}
protected function __toString() {
$str = $this -> _data;
return $str;
}
}
謝謝您的時間。
親切的問候,
馬呂斯
你可以發佈sanitizeInput類的input()方法的代碼嗎? – 2010-05-04 14:29:25
*(備選)* http://de2.php.net/manual/en/book.filter.php和http://phpro.org/tutorials/Filtering-Data-with-PHP.html#23 – Gordon 2010-05-04 14:47:44