Использую функцию array_walk($массив, "имя_функции"). Раньше писал программы используя только функции (без ООП), небыло горя, а теперь необходимо как то так: Код (Text): array_walk($barkey, "${this}->barkey"); (К каждому элементу массива применить метод класса) Совсем не хочется делать так: Код (Text): ... _construct($name) { $this->name = $name; ... } ... func .. lalal() { array_walk($barkey, "${this->name}->barkey"); ... } Даже не пытался создавать это свойство (name) для объекта, считаю что объект и без этого свойства должен знать как его зовут. Да?
если вызывается изнутри класса, зачем брать this в скобочки? или без них не работает? о.О ЗЫ: и чем foraech плох?
Вызывается да, внутри класса. Я бы сказал: ВООБЩЕ не работает то что я пишу, я не знаю как указать имя метода! =( перепробовал: Код (Text): $this->."barkey" $this."->barkey" "${this}->barkey" и тупо даже: не сработало, хотя явно задал...
foreach ничем не плох, наверное вернусь на круги своя, просто хотел использовать огромные возможности PHP, а то весь движек str_replace, foreach )) ...
Если не ошибаюсь, то при указании метода как callback функции надо передавать массив из двух элементов: первый объект у которого вызывается метод, второй - имя метода (или имя класса и имя метода если метод статический). Посмотрите на php.net разные функции с callback, там должны быть примеры.
У объекта иени нет. Имя есть у класса. PHP: <?php class a { function b($val, $key) { echo "$key=>$val"; } function c($arr) { array_walk($arr, get_class($this).'::b'); return $arr; } } $a = new a; $array = array(1,2,3,4,5); $a->c($array);
Код (Text): Fatal error: Cannot call method self::b() or method does not exist PHP 5.2.11 еще можно так PHP: array_walk($arr, array($this, 'b')); и $this можно заменить на self, но при этом выпадет нотис.
А можете уточнить про "::"? Я новичек и как я понимаю это обозначает обращение к "Статическим" методам и свойствам (константам) класса. Тогда в коде выше нужно было: Спасибо всем пойду пробовать все ваши предложения, интересно же...