s@nch0
Хочу всё знать
Допустим имеется такой класс:
Почему в результате не сохраняются изменения члена класса safe_data ?
Если запустить под отладчиком, то в самой функции значения меняются, но не присваиваются в $t2
При выполнении получаем
array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt&&"
}
А должно было получиться так
array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt"
}
PHP:
class url
{
public $url_data = array();
public $path_array = '';
public function __construct($url){
$this->url_data = parse_url($url);
//$this->path_array = array_filter(explode('/', $this->url_data['path']), array(&$this, 'safe_data'));
$t1 = explode('/', $this->url_data['path']);
$t2 = array_filter($t1, array(&$this, 'safe_data'));
$this->path_array = $t2;
}
/**
* Фильтр
*
* @param $el
* @return mixed
*/
private function safe_data($el){
if (!empty($el)){
$pattern = '/[^0-9a-zA-Z_.\-]/';
$replacement = '';
$el = preg_replace($pattern, $replacement, $el);
return true;
//return preg_replace($pattern, $replacement, $el);
}
}
}
$url = new url('http://www.site.ru/test1/test/tt&&/?asd');
var_dump($url->path_array);
Если запустить под отладчиком, то в самой функции значения меняются, но не присваиваются в $t2
При выполнении получаем
array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt&&"
}
А должно было получиться так
array(3) {
[0] =>
string(5) "test1"
[1] =>
string(4) "test"
[2] =>
string(4) "tt"
}