За последние 24 часа нас посетил 16871 программист и 1641 робот. Сейчас ищут 954 программиста ...

Вызов метода класса из XSLT. Как???

Тема в разделе "Прочие вопросы по PHP", создана пользователем bogong, 25 янв 2012.

  1. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Добрый день ...
    Может кто знает как вызвать метод класса из xslt??? Как вызывать функцию - знаю ..., как вызвать метод???
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. className::funcName(); 
    Код (PHP):
    1. $cls = new className();
    2. $cls->funcName(); 
     
  3. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Из XSLT!!! - это ключевое слово ... Как в коде PHP я и так знаю ...
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Как следствие, XSLT-документы не содержат программного кода каких-либо методов. Нельзя вызвать то, чего нет.
     
  5. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Хотите крутить методы - извольте их иметь статикой:
    Код (PHP):
    1. class Test {
    2.       static public function blabla(int $num) {}
    3. }
    4.  
    Код (Text):
    1.  
    2. <xsl:value-of select="php:function('Test::blabla',1)" />
    PS: И кстати, неймспейсы тоже никто не отменял =) Всё в ваших руках!
    Удачи.
     
  6. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    эх ..., из трех ответивших ..., только одно по делу ..., остальное словоблудство ... Атас!!!

    ____
    AndreJM - Благодарю ... Попробую поделать так ...
    [vs] и sobachnik - не понимаете смысла вопроса - не пытайтесь отвечать ...

    Добавлено спустя 2 минуты 50 секунд:

    А вызывает он только статический метод???
     
  7. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Код (Text):
    1. XSLTProcessor::registerPHPFunctions — Включает возможность использовать PHP функции в качестве функций XSLT
    Боюсь Вам не удастся послать сообщение не статическому методу класса если его экземпляра не существует, в то время как registerPHPFunctions регистрирует исключительно функции.

    Если я правильно понял, то вы играетесь с шаблонами XSL. Да, функциональность XSL довольна интересна, и верстальщику подобных шаблонов можно даже не задумываться о php-реализации, однако я не совсем понимаю, зачем вы используя в качестве шаблонов XSL пытаетесь верстальщику навязать php.. Это же абсурд на мой взгляд.
    XSL и есть для того, чтобы разделить ответственность, PHP-кодер пишет код и отдает данные, XSL-кодер наводит красоту (манипулируя полученными данными).
    Зачем XSL-кодеру еще и вникать в Ваш php?

    =)
     
  8. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Происходит динамическая сборка данных в зависимости от параметров ...
     
  9. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Дело конечно Ваше, однако манипуляции данными средствами XSL теряют свою необходимость, а значит и вовсе не нужен XSL шаблон, а значит и трансформировать незачем =)
     
  10. bogong

    bogong Активный пользователь

    С нами с:
    20 май 2010
    Сообщения:
    114
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Очень спорно ..., особенно если использовать XML и XSLT как некий вариант предварительного кэширования данных ...
     
  11. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Тема Ваша, задача Ваша, спорить не буду.
    Удачи)