За последние 24 часа нас посетили 34117 программистов и 1709 роботов. Сейчас ищут 739 программистов ...

Сравнение функций

Тема в разделе "PHP для новичков", создана пользователем mo0n90, 12 окт 2016.

Метки:
  1. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Добрый день! Мне необходимо сравнить 2 переменные, но проблема в том, что они находятся внутри разных функций, подскажите пожалуйста как это можно сделать?
    Код (Text):
    1. class IBHandlers {
    2.         function OnBeforeIBlockElementUpdateHandler(&$arFields) {
    3.             код...
    4.                 if($ar_props = $db_props->Fetch()){
    5.                     $FORUM_TOPIC_ID = $ar_props["VALUE"];
    6.                 }
    7.                 else{
    8.                      $FORUM_TOPIC_ID = false;
    9.                 }
    10.             }      
    11.          function OnAfterIBlockElementUpdateHandler(&$arFields) {
    12.             код...
    13.                 if($ar_props_after = $db_props_after->Fetch()){
    14.                     $FORUM_TOPIC_ID_AFTER = $ar_props_after["VALUE"];
    15.                     //return $FORUM_TOPIC_ID_AFTER;
    16.                 }
    17.                 else{
    18.                     $FORUM_TOPIC_ID_AFTER = false;
    19.        
    20.                 }
    21.             }
    22. Ну и здесь типа...
    23. if ($FORUM_TOPIC_ID != $FORUM_TOPIC_ID_AFTER)...
    24. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну так у вас класс, у него могут быть поля. Вынесете эти переменные в поля
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Что-то никак не могу понять, как это реализовать внутри класса :(
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @mo0n90 добавить свойства в класс получилось? Потом их использовать вышло?
     
  6. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    В добавлении свойств трудностей не возникает, а вот использовать научился только после окончания класса.
    Код (Text):
    1. class Foo
    2. {
    3.     public $one;
    4.     public $two;
    5.    
    6.     public function __construct() {
    7.         $this->one = function() {
    8.             return 42;
    9.         };
    10.         $this->two = function() {
    11.             return 45;
    12.         };
    13.     }
    14. }
    15. $obj = new Foo();
    16.  
    17. $func = $obj->one;
    18. echo $func(), PHP_EOL;
    19.  
    20. $test = $obj->two;
    21. echo $test(), PHP_EOL;
     
    #6 mo0n90, 26 окт 2016
    Последнее редактирование: 26 окт 2016
  7. ELEMENTAL Limited

    ELEMENTAL Limited Новичок

    С нами с:
    14 окт 2016
    Сообщения:
    19
    Симпатии:
    6
    Код (Text):
    1.    function oneTwo() {
    2.         $one_output    =   $this->one;
    3.         $two_output    =   $this->two;
    4.         if ($one_output == $two_output) {
    5.             return true;
    6.         }
    7.     }
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    значит задача решена?
     
  9. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Нет, что-то ничего не выходит. Все-таки на реальном примере вообще продвижения никакого нет, скидываю реальный код:
    Код (Text):
    1. AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("IBHandlers", "OnBeforeIBlockElementUpdateHandler"));//до изменения
    2. AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array("IBHandlers", "OnAfterIBlockElementUpdateHandler"));//после изменения
    3. define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_news.txt");
    4. class IBHandlers {
    5.         function OnBeforeIBlockElementUpdateHandler(&$arFields) {
    6.             if($arFields['IBLOCK_ID'] == 275){
    7.                 $db_props = CIBlockElement::GetProperty(275, $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"tm"));
    8.                 if($ar_props = $db_props->Fetch()){
    9.                     $FORUM_TOPIC_ID = $ar_props["VALUE"]; // значение до
    10.                 }
    11.                 AddMessage2Log($FORUM_TOPIC_ID, "FORUM_TOPIC_ID");
    12.             }
    13.         }      
    14.          function OnAfterIBlockElementUpdateHandler(&$arFields) {
    15.             if($arFields['IBLOCK_ID'] == 275){
    16.                 $db_props_after = CIBlockElement::GetProperty(275, $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"tm"));
    17.                 if($ar_props_after = $db_props_after->Fetch()){
    18.                     $FORUM_TOPIC_ID_AFTER = $ar_props_after["VALUE"];// значение после
    19.                 }
    20.                 AddMessage2Log($FORUM_TOPIC_ID_AFTER, "FORUM_TOPIC_ID_AFTER");
    21.             }
    22.         }
    23. }
    Как создать условие if ($FORUM_TOPIC_ID != $FORUM_TOPIC_ID_AFTER) ?
     
  10. ELEMENTAL Limited

    ELEMENTAL Limited Новичок

    С нами с:
    14 окт 2016
    Сообщения:
    19
    Симпатии:
    6
    Вернуть функциями значения $FORUM_TOPIC_ID и $FORUM_TOPIC_ID_AFTER. Потом с ними работать
     
  11. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    В первой и во второй функции пишу return $FORUM_TOPIC_ID и $FORUM_TOPIC_ID_AFTER соответственно. Далее:
    function test(){
    $one = OnBeforeIBlockElementUpdateHandler();
    $two = OnAfterIBlockElementUpdateHandler();
    if($one == $two){...}, значения не приходят. :(
     
  12. mo0n90

    mo0n90 Новичок

    С нами с:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
  13. ELEMENTAL Limited

    ELEMENTAL Limited Новичок

    С нами с:
    14 окт 2016
    Сообщения:
    19
    Симпатии:
    6
    $one = $this->OnBeforeIBlockElementUpdateHandler();
    $two = $this->OnAfterIBlockElementUpdateHandler();