2013-12-21 3 views
0

EDIT: Ссылка на мой первый вопрос. Мог бы понять некоторые вещи. PHP Get corresponding data, with default and error handlingPHP создать объект внутри собственного конструктора

У меня есть функция, которая проверяет, существует ли инструкция GET. Если это так, он передает значение другой функции, которая затем выбирает класс на основе значения инструкции GET.

объяснения: URL-адрес = Page = Контакт
GetFormVariable одобряет его, и класс Contact выбран, и он будет возвращать строку. Эта строка используется как объект «Контент», который, как он говорит, создает содержимое страницы.

public function getFormVariable($value){ 

    switch (strtoupper($_SERVER['REQUEST_METHOD'])) { 
     case 'GET': 
      if (isset($_GET[$value]) && $_GET[$value] != NULL) { 
       return $_GET[$value]; 
      } 
      else{ 
       return false; 
      } 
      break; 
      case 'POST': 
       if (isset($POST[$value]) && $POST[$value] != NULL) { 
       return $POST[$value]; 
      } 
      else{ 
        return false; 
      } 
       break; 

     default: 
      return false; 

    } 
} 

Теперь вопрос. Если в URL-адресе нет инструкции GET. GetFormVariable возвращает false. И это означает, что ничего не видно.

Как мне создать этот конструктор.

public function SetProperty ($prob, $val){ 
    $this->$prob = $val; 
} 

Информация для создания ContentHome.
SetProperty ('Content', 'ContentHome');

Извините за плохое объяснение, если что-то неясно, скажите, пожалуйста.

+0

При использовании значения по умолчанию? – gontrollez

+0

@ gontrollez Я не уверен, что вы имеете в виду? –

+0

В разделе [на этой странице руководства по PHP] (http://www.php.net/manual/en/functions.arguments.php), озаглавленном «Значение аргумента по умолчанию» –

ответ

1

Я не уверен, предлагаю закрыть этот вопрос, как неясно, что вы просите, но решил бросить некоторую помощь по прилагаемому образцу коды в любом случае ...

Вы можете раздеть это вниз резко, и так как там нет контекст, функция может быть также static.

static public function getFormVariable($value) 
{ 
    if($_SERVER['REQUEST_METHOD'] == 'GET' && 
     isset($_GET[$value])    && 
     !empty($_GET[$value])) 
     return $_GET[$value]; 

    elseif($_SERVER['REQUEST_METHOD'] == 'POST' && 
      isset($POST[$value])     && 
      !empty($POST[$value])) 
     return $POST[$value]; 

    return false; 
} 

Оригиналы isset и != NULL проверки были делать то же чек. Возможно, вы хотите проверить empty() в качестве третьей проверки, но look it up, чтобы быть уверенным.

+0

Когда getFormVariable() возвращает false, так как в нем нет фактического оператора GET, он должен загрузить класс. Эти классы загружаются/активируются через другой файл в объекте. Вот объект $ ConfigPage-> SetProperty ('Content', 'ContentHome'); а затем в файле, где функция getFormVariable() создает и использует объект. Теперь, как я могу создать это содержимое в самом конструкторе? –

+0

Все 'getFormVariable' выполняет поиск значений в' $ _GET' или '$ _POST'. Создание экземпляра класса на основе этой информации для некоторых значений должно обрабатываться * вне * 'getFormVariable'. – quickshiftin

+1

Хотя ваш код не был решением, вы улучшили свой собственный код. Поэтому, услышав, я отмечаю ваш ответ как решение, так как я отказываюсь от этого вопроса. Большое спасибо! –

0

Вопрос не ясен.

Как вы называете getFormVariable? Как вы используете SetProperty с информацией, предоставляемой getFormVariable?

Насколько я понял, вы имеете в виду это ...

$var = getFormVariable(???); 

if (false === $var) 
{ 
    SetProperty('Content', 'ContentHome'); 
} else { 
    SetProperty('var', $var); 
} 
Смежные вопросы