Добрый день! Мне необходимо сравнить 2 переменные, но проблема в том, что они находятся внутри разных функций, подскажите пожалуйста как это можно сделать? Код (Text): class IBHandlers { function OnBeforeIBlockElementUpdateHandler(&$arFields) { код... if($ar_props = $db_props->Fetch()){ $FORUM_TOPIC_ID = $ar_props["VALUE"]; } else{ $FORUM_TOPIC_ID = false; } } function OnAfterIBlockElementUpdateHandler(&$arFields) { код... if($ar_props_after = $db_props_after->Fetch()){ $FORUM_TOPIC_ID_AFTER = $ar_props_after["VALUE"]; //return $FORUM_TOPIC_ID_AFTER; } else{ $FORUM_TOPIC_ID_AFTER = false; } } Ну и здесь типа... if ($FORUM_TOPIC_ID != $FORUM_TOPIC_ID_AFTER)... }
В добавлении свойств трудностей не возникает, а вот использовать научился только после окончания класса. Код (Text): class Foo { public $one; public $two; public function __construct() { $this->one = function() { return 42; }; $this->two = function() { return 45; }; } } $obj = new Foo(); $func = $obj->one; echo $func(), PHP_EOL; $test = $obj->two; echo $test(), PHP_EOL;
Код (Text): function oneTwo() { $one_output = $this->one; $two_output = $this->two; if ($one_output == $two_output) { return true; } }
Нет, что-то ничего не выходит. Все-таки на реальном примере вообще продвижения никакого нет, скидываю реальный код: Код (Text): AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("IBHandlers", "OnBeforeIBlockElementUpdateHandler"));//до изменения AddEventHandler("iblock", "OnAfterIBlockElementUpdate", array("IBHandlers", "OnAfterIBlockElementUpdateHandler"));//после изменения define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_news.txt"); class IBHandlers { function OnBeforeIBlockElementUpdateHandler(&$arFields) { if($arFields['IBLOCK_ID'] == 275){ $db_props = CIBlockElement::GetProperty(275, $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"tm")); if($ar_props = $db_props->Fetch()){ $FORUM_TOPIC_ID = $ar_props["VALUE"]; // значение до } AddMessage2Log($FORUM_TOPIC_ID, "FORUM_TOPIC_ID"); } } function OnAfterIBlockElementUpdateHandler(&$arFields) { if($arFields['IBLOCK_ID'] == 275){ $db_props_after = CIBlockElement::GetProperty(275, $arFields['ID'], array("sort" => "asc"), Array("CODE"=>"tm")); if($ar_props_after = $db_props_after->Fetch()){ $FORUM_TOPIC_ID_AFTER = $ar_props_after["VALUE"];// значение после } AddMessage2Log($FORUM_TOPIC_ID_AFTER, "FORUM_TOPIC_ID_AFTER"); } } } Как создать условие if ($FORUM_TOPIC_ID != $FORUM_TOPIC_ID_AFTER) ?
В первой и во второй функции пишу return $FORUM_TOPIC_ID и $FORUM_TOPIC_ID_AFTER соответственно. Далее: function test(){ $one = OnBeforeIBlockElementUpdateHandler(); $two = OnAfterIBlockElementUpdateHandler(); if($one == $two){...}, значения не приходят.
$one = $this->OnBeforeIBlockElementUpdateHandler(); $two = $this->OnAfterIBlockElementUpdateHandler();