Всем привет. Столкнулся и я с такой ошибкой в php 5.6 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/html/test.site.ru/engine/classes/parse.class.php on line 410 сама строка Код (PHP): $source = preg_replace( "#\[uppod=([^\]]+)\]#ies", "\$this->build_uppod('\\1')", $source ); переделываем на такую Код (PHP): $source = preg_replace_callback( "#\[uppod=([^\]]+)\]#is", function($m) use ($this){return $this->build_uppod($m[1]);}, $source ); Получаем ошибку Fatal error: Cannot use $this as lexical variable. да, вот что мне phpinfo говорит PHP Version 5.6.14-0+deb8u1 Apache Version Apache/2.4.10 (Debian) Заранее спасибо. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Код (PHP): $ths =& $this; $source = preg_replace_callback('', function($m)use($ths){ return $ths->method($m[1])); дальше сам
На самом деле, $this и так доступен в замыканиях, не нужно ничего делать. Вот этот код работает корректно: http://sandbox.onlinephpfunctions.com/code/416078107d33da88 ... 39ea259adb Код (PHP): class A { public $b = 5 ; function c() { array_map(function ($e) { echo $this->b + $e, PHP_EOL; }, [1, 2, 3]); } } $a = new A; $a->c();
вопрос решился вот так. спасибо всем за ответы и помощь Код (PHP): $that = $this; $source = preg_replace_callback( "#\[uppod=([^\]]+)\]#is", function($m) use ($that){return $that->build_uppod($m[1]);}, $source ); PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]