Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: можно ли передать POST данные классу без создания экземпляра класса в php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: можно ли передать POST данные классу без создания экземпляра класса в php
BendeR_say
Отправлено: 06 Февраля, 2012 - 08:37:01
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Можно ли передать POST данные классу без создания экземпляра класса в php?
У меня есть скрипт с формой, который передает пост данные. Другой скрипт получает эти данные, в нем же есть класс. Так вот, можно ли указать свойству класса, чтобы это свойство по умолчанию равнялось переданным пост данным. Ну, типа так:
причем так не работает.
Или надо все-таки создавать экземпляр класса, и потом методом устанавливать значение.
 
 Top
snikers987
Отправлено: 06 Февраля, 2012 - 08:48:50
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




Без создания екземпляра никак, тут вытекает вопрос, зачем куда-то что-то передавать, если с этим чем-то далее не работать?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
BendeR_say
Отправлено: 06 Февраля, 2012 - 09:06:49
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




snikers987 пишет:
Без создания екземпляра никак, тут вытекает вопрос, зачем куда-то что-то передавать, если с этим чем-то далее не работать?

Как раз я с этими полученными POST данными и буду работать.
 
 Top
snikers987
Отправлено: 06 Февраля, 2012 - 09:09:19
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




.

(Отредактировано автором: 06 Февраля, 2012 - 09:25:53)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
sKaa
Отправлено: 06 Февраля, 2012 - 09:14:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


snikers987, вот зачем ты не зная вводишь людей в заблуждение ? Щя я Dreamveawer запущу дам весь класс сразу
Щя я константы забыл..

(Отредактировано автором: 06 Февраля, 2012 - 09:23:23)

 
 Top
snikers987
Отправлено: 06 Февраля, 2012 - 09:24:33
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




sKaa пишет:
snikers987, вот зачем ты не зная вводишь людей в заблуждение ? Щя я Dreamveawer запущу дам весь класс сразу

Признаю, не подумал что речь могла идти о статических методах..


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
sKaa
Отправлено: 06 Февраля, 2012 - 09:27:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


PHP:
скопировать код в буфер обмена
  1.         final class Classname {
  2.                
  3.                 protected function __clone()    { }
  4.                 protected function __wakeup()   { }
  5.                 protected function __construct(){ }
  6.  
  7.                 static public $GET, $POST, $COOKIE;
  8.        
  9.                 static public function Init(){
  10.                         self::$GET      = self::__process_data($_GET);
  11.                         self::$POST     = self::__process_data($_POST);
  12.                         self::$COOKIE   = self::__process_data($_COOKIE);
  13.                 }      
  14.        
  15.                 static private function __clear($str){
  16.                         return htmlentities(strip_tags($str), ENT_QUOTES, 'UTF-8');
  17.                 }
  18.                
  19.                 static private function __process_data($data){
  20.  
  21.                         $array = array();
  22.                         if(sizeof($data))
  23.                                 foreach($data as $key=>$value)
  24.                                         $array[$key] = (is_array($value))
  25.                                                 ? self::__process_data($value)
  26.                                                 : self::__clear($value);
  27.                         else
  28.                                 return array();
  29.                         return $array;
  30.                 }
  31.  
  32.         }

Ну правильной работы скрипта нужно где-то в начале скрипта :
PHP:
скопировать код в буфер обмена
  1.  
  2. Classname::Init();
  3.  
  4. // А получить очищенный массив в любом месте кода (я надеюсь на автолоад)
  5. $GET = Classname::$GET;
  6.  

(Добавление)
BendeR_say пишет:
const post = $_POST['form'];

Можно, только константой это делать не можно.
(Добавление)
Да и не нужно - константы по определению предопределенные величины.
(Добавление)
Можно вот вместо констант в метод Init добавить проверку :
PHP:
скопировать код в буфер обмена
  1.  
  2. self::$GET = (is_null(self::$GET)) ? self::__process_data($_GET) : self::$GET;
  3.  

И так с каждым массивом, но это вариант для безруких, у себя я так делать смысла не вижу т.к твёрдо уверен что метод Init в коде у меня указывается только один раз где-то в начале index.php
 
 Top
BendeR_say
Отправлено: 06 Февраля, 2012 - 10:06:28
Post Id


Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




sKaa пишет:
Можно, только константой это делать не можно.


Вот так тоже нельзя. Я так понял, напрямую классу POST данные все равно нельзя передать? (в самом классе)
 
 Top
Okula
Отправлено: 06 Февраля, 2012 - 11:16:22
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




$_POST и $_GET это глобальные переменные их можно вызывать из любого места скрипта так же как и $_SESSION и $_COOKIE.
Их никуда передавать не нужно.
 
 Top
sKaa
Отправлено: 06 Февраля, 2012 - 11:26:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Okula пацаны харош уже)) Ты просто не в курсе о чем мы тут говорили и не в тему вставил щяс. Тему закрыть давно пора. Вопрос автора исчерпан.
(Добавление)
Я тебе написал класс внутри которого как ты и просил не создавая объект класса передаются все суперглобальные массивы к которым пользователь может приложить руку.
Если ты хочешь в класс передать вообще любой массив из вне или суперглобальный то :

PHP:
скопировать код в буфер обмена
  1.  
  2.             final class Classname {
  3.                    
  4.                     protected function __clone()    { }
  5.                     protected function __wakeup()   { }
  6.                     protected function __construct(){ }
  7.      
  8.                     static public $data = array();
  9.            
  10.                     static public function clear(array $array = array()){
  11.                            return self::__process_data(self::$data);
  12.                     }      
  13.            
  14.                     static private function __clear($str){
  15.                             return htmlentities(strip_tags($str), ENT_QUOTES, 'UTF-8');
  16.                     }
  17.                    
  18.                     static private function __process_data($data){
  19.      
  20.                             $array = array();
  21.                             if(sizeof($data))
  22.                                     foreach($data as $key=>$value)
  23.                                             $array[$key] = (is_array($value))
  24.                                                     ? self::__process_data($value)
  25.                                                     : self::__clear($value);
  26.                             else
  27.                                     return array();
  28.                             return $array;
  29.                     }
  30.      
  31.             }
  32.  
  33.  

И использовать тогда класс надо как-то так :
PHP:
скопировать код в буфер обмена
  1.  
  2. $get = Classname :: clear($_GET);
  3. $array = Classname :: clear(array( ... ));
  4. $post = Classname :: clear($_POST);
  5.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB