Morgan » 2010.08.29 02:13

Как обратиться к статической функции текущего класса?
пробую
preg_repalce_callback('...', 'self::function')
но бьет ошибку
Добавлено спустя   2 минуты  6 секунд:
и как узнать имя класса ?
get_class применимо только к обьектам.
покажу на примере что мне нужно

Код:

1
span style="color: #0000BB"><?php// класс 'a', название меняется частоclass a{static function b(){echo 'this class name is a!';}}?>
Gemorroj » 2010.08.29 10:04

Код:

1
span style="color: #0000BB"><?phpclass a{ static function b() { echo __CLASS__; }}

self::method отлично работает

Morgan » 2010.08.29 10:58

Код:

1
span style="color: #0000BB"><?phpclass a{static function c(){$t = preg_replace_callback('~(.*)~', 'self::b', '1dsadsdaasd1');}static function b($data){var_dump($data);}}a::c();?>

-->
Fatal error: Cannot call method self::b() or method does not exist

Morgan » 2010.08.29 14:31

?

Gemorroj » 2010.08.29 14:51

php 5.3.3

Код:

1
2
3
4
5
6
7
8
9
10
11
12
array(2) {
[0]=>
string(12) "1dsadsdaasd1"
[1]=>
string(12) "1dsadsdaasd1"
}
array(2) {
[0]=>
string(0) ""
[1]=>
string(0) ""
}
Morgan » 2010.08.29 15:22

оказывается в php 5.2.4 такое не прокатывает.
заменил на
static $class_name = __CLASS__;
...
self::$class_name.'::method'
))

Morgan » 2010.08.29 16:37

подсказали еще  array('self', 'b');

Morgan » 2010.09.10 11:37

Код:

1
span style="color: #0000BB"><?phpclass a{function b($a){echo $a;}function c($b){$b = preg_replace_callback('.*', array('this', 'b'), $b);}}$a = new A();$a -> c('adsasdasd');?>

теперь здесь бьет ошибки

Gemorroj » 2010.09.10 19:26

Код:

1
span style="color: #0000BB"><?phpclass A{ public function b($a) { print_r($a); } public function c($b) { $b = preg_replace_callback('/.*/', array($this, 'b'), $b); }}$a = new A();$a -> c('adsasdasd');
Morgan » 2010.09.16 12:05

и опять я = )
array_map() как то можно подружить с первым параметров типа array($object, 'method') ?

Gemorroj » 2010.09.16 14:37

ну да, так же как обычно

Morgan » 2010.09.16 22:44

хм, а как обратится к методу через свойство другого класса?

Код:

1
$result = $object -> var -> method();

как же тут сделать?)

Gemorroj » 2010.09.16 23:12

Код:

1
span style="color: #0000BB"><?phpclass X{ public $v; public function __construct () { $this->v = new A(); }}class A{ public function f($v) { return 'c'; }}$v = new X;print_r(array_map(array($v->v, 'f'), array('hfdg')));