Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
ubrouting [2019/07/29 10:57] |
ubrouting [2023/06/16 17:36] (поточний) skybetik [О синтаксисе] |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== Робота із зовнішніми даними за допомогою ubRouting ====== | ||
+ | ===== Навіщо все це? ===== | ||
+ | |||
+ | Можливо, | ||
+ | |||
+ | ===== Це обов' | ||
+ | **Ні! ** Ніхто вас ні в чому не обмежує і не примушує використовувати будь-що таке специфічне у вашому новому коді, і тим паче навіть не натякає, | ||
+ | |||
+ | ===== Щодо іменування класу ===== | ||
+ | Чому з маленької літери, | ||
+ | \\ | ||
+ | У будь-якому разі вам ніхто не забороняє зробити щось на кшталт | ||
+ | |||
+ | <code php> | ||
+ | $routing=new ubRouting(); | ||
+ | </ | ||
+ | |||
+ | і використовувати це з таким іменуванням як вам завгодно.\\ | ||
+ | |||
+ | До речі так. Це все доступно починаючи з Ubilling 1.0.0 rev 6925. | ||
+ | ===== Про перевірку змінних на існування ===== | ||
+ | |||
+ | Якщо ви вже раніше розробляли код для Ubilling або хоча б вдумливо його вивчали, | ||
+ | |||
+ | <code php> | ||
+ | if (wf_CheckGet(array(' | ||
+ | deb(' | ||
+ | } | ||
+ | </ | ||
+ | Зрозуміло, | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | deb(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Стоп, але ми ж перевіряємо на прилітання всього одну змінну, | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | А взагалі правильним варіантом може бути перевірка у вигляді | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Так, тепер ми можемо перевіряти як масив параметрів aka змінних, | ||
+ | |||
+ | |||
+ | А якщо ми знаємо, | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | deb(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | З чого, власне, | ||
+ | |||
+ | <code php> | ||
+ | // За замовчуванням $ignoreEmpty має значення true, | ||
+ | // хоча можете і вказувати його безпосередньо як ubRouting:: | ||
+ | if (ubRouting:: | ||
+ | deb(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Окей, це все зрозуміло. З GET розібралися. А що якщо ми хочемо перевірити факт прильоту даних з POST форми, скажімо такої як нижче? | ||
+ | <code php> | ||
+ | $inputs= wf_TextInput(' | ||
+ | $inputs.= wf_TextInput(' | ||
+ | $inputs.= wf_Submit(__(' | ||
+ | $form= wf_Form('', | ||
+ | deb($form); | ||
+ | </ | ||
+ | |||
+ | Ви не повірите. Все повністю ідентично. Воно ж зроблено для вашої зручності. Знали? ;) | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | deb(' | ||
+ | } | ||
+ | </ | ||
+ | (так, ми очікуємо обидва поля не порожніми) | ||
+ | ===== Щодо отримання значень змінних ===== | ||
+ | |||
+ | Окей. З перевіркою даних на сам факт їхнього прильоту розібралися. А як тепер отримувати їхні значення? | ||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | $newName= ubRouting:: | ||
+ | $newSize= ubRouting:: | ||
+ | show_window(__(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | і так, отримувати значення з GET ми можемо точно так само, наприклад так: | ||
+ | <code php> | ||
+ | $variableName=ubRouting:: | ||
+ | </ | ||
+ | |||
+ | До речі, у разі, якщо ви намагаєтеся отримати змінну за допомогою **::get** або **::post**, а її немає (так, вона тупо не isset), обидва ці методи будуть чесно повертати **false**. Не забуваємо, | ||
+ | ===== Щодо їхньої фільтрації ===== | ||
+ | |||
+ | Також ви можете фільтрувати дані прямо в процесі їх отримання, | ||
+ | |||
+ | |||
+ | <code php> | ||
+ | if (ubRouting:: | ||
+ | $newName= ubRouting:: | ||
+ | $newSize= ubRouting:: | ||
+ | show_window(__(' | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Так. Це керується другим параметром методів get/post. Їхні можливі значення: | ||
+ | |||
+ | * **raw** (за замовчуванням) - дані будуть повернуті "як є" без будь-якої попередньої обробки | ||
+ | * **int** - з даних буде відфільтровано взагалі все, крім циферок у діапазоні [0-9] | ||
+ | * **mres** - для даних буде попередньо запущена функція mysql_real_escape_string() | ||
+ | * **callback** - для даних буде запущено функцію з ім' | ||
+ | * **fi** - дані буде пропущено через [[https:// | ||
+ | |||
+ | Приклад того, як ви можете використовувати колбек функції: | ||
+ | <code php> | ||
+ | $newAnother= ubRouting:: | ||
+ | </ | ||
+ | |||
+ | Так. Так само ви можете отримувати і фільтрувати дані з GET-змінних: | ||
+ | <code php> | ||
+ | $newAnother= ubRouting:: | ||
+ | </ | ||
+ | |||
+ | |||
+ | Також для обох методів ::get і ::post ви можете вказувати множинні колбек-функції, | ||
+ | |||
+ | <code php> | ||
+ | $filters = array(' | ||
+ | deb(ubRouting:: | ||
+ | </ | ||
+ | |||
+ | Коллбек-функції для даних будуть викликані послідовно, | ||
+ | |||
+ | <code php> | ||
+ | $anotherData=ubRouting:: | ||
+ | </ | ||
+ | |||
+ | А що якщо вам потрібні одні й ті самі дані і в сирому вигляді, | ||
+ | |||
+ | <code php> | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Також ви можете використовувати штатні механіки filter, вказавши режим фільтрування як fi (filter input): | ||
+ | <code php> | ||
+ | $data = ubRouting:: | ||
+ | </ | ||
+ | ===== Про навігацію ===== | ||
+ | |||
+ | Можливо, | ||
+ | |||
+ | <code php> | ||
+ | ubRouting:: | ||
+ | </ | ||
+ | |||
+ | Так, це всього навсього просто зручний і короткий аліас для rcms_redirect($url) | ||
+ | |||
+ | ===== Сирі дані ===== | ||
+ | |||
+ | Також можна отримувати копії суперглобальних масивів $_GET і $_POST цілком, | ||
+ | |||
+ | <code php> | ||
+ | $postData= ubRouting:: | ||
+ | $getData= ubRouting:: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Про Винятки ===== | ||
+ | |||
+ | У разі спроб використання неприпустимих $filtering або невірної вказівки колбек-функції в :: | ||
+ | |||
+ | * **EX_WRONG_FILTERING_MODE** - неіснуючий режим фільтрування даних. | ||
+ | * **EX_CALLBACK_NOT_DEFINED** - коллбек функція не існує/ | ||
+ | * **EX_CALLBACK_EMPTY** - порожнє ім' | ||
+ | * **EX_FILTER_EMPTY** - порожнє ім' | ||
+ | * **EX_PARAMS_EMPTY** - порожнє ім' | ||
+ | |||
+ | ===== Про синтаксис ===== | ||
+ | |||
+ | Ви взагалі можете використовувати це як завгодно і звертатися до цього як завгодно і зручно особисто вам, у своїй практичній діяльності. Хоч так: | ||
+ | |||
+ | <code php> | ||
+ | class MyClassName { | ||
+ | |||
+ | /** | ||
+ | * System routing object instance placeholder | ||
+ | * | ||
+ | * @var object | ||
+ | */ | ||
+ | protected $routing = ''; | ||
+ | |||
+ | public function __construct() { | ||
+ | $this-> | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Creates new protected routing object instance for further usage | ||
+ | | ||
+ | * @return void | ||
+ | */ | ||
+ | protected function initRouting() { | ||
+ | $this-> | ||
+ | } | ||
+ | | ||
+ | | ||
+ | /** | ||
+ | * Returns current system module name | ||
+ | | ||
+ | * @return string | ||
+ | */ | ||
+ | public function getModuleName() { | ||
+ | $result=''; | ||
+ | if ($this-> | ||
+ | $this-> | ||
+ | } | ||
+ | return($result); | ||
+ | } | ||
+ | | ||
+ | | ||
+ | /** | ||
+ | * Returns all available POST variables as array | ||
+ | | ||
+ | * @return array | ||
+ | */ | ||
+ | public function getPostVars() { | ||
+ | return(ubRouting:: | ||
+ | } | ||
+ | | ||
+ | /** | ||
+ | * Returns all available GET variables as array | ||
+ | | ||
+ | * @return array | ||
+ | */ | ||
+ | public function getGetVars() { | ||
+ | return($this-> | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | $obj = new MyClassName(); | ||
+ | show_window(__(' | ||
+ | debarr($obj-> | ||
+ | debarr($obj-> | ||
+ | </ | ||
+ | |||
+ | І взагалі робіть що хочете. Хочете викликайте методи за допомогою paamayim nekudotayim (::) прямо з об' |