2010-10-25 2 views
1

Я знаю, что мы используем функцию GET для получения переменных из url в php, когда мы используем метод GET для передачи данных по страницам или на одной странице.

Однако

$obj = new BlahBlahName($_GET); 

что же это сделать?

+1

['$ _GET'] (http://de.php.net/manual/en/reserved.variables.get.php) не является функцией, ни методом, а [зарезервированной переменной] (http://de.php.net/manual/en/reserved.variables.php) проведение массива – Gordon

+1

@ Gordon - Кому-то нужно отправить заметку в w3schools: http://w3schools.com/PHP/php_get.asp –

+0

@Rob Hruska: w3schools не совсем не так. Суперклассы действительно не заселены с самого начала, они заполняются сначала при доступе. Поэтому PHP-внутренне это «функция». Но фига, эта двусмысленность не имеет места в документации для конечного пользователя. – mario

ответ

0

Чтобы понять это, вы должны понимать, что такое переменная «$ _GET». Чтобы получить полную информацию об этом, вы можете прочитать официальную документацию PHP.net. Вот ссылка: http://php.net/manual/en/reserved.variables.get.php

Вот приведенная информация. В основном, когда страница загружается и имеет некоторые переменные, определенные в ее адресе, PHP генерирует переменную массива с именем $ _GET. Таким образом, эта переменная представляет собой не что иное, как массив. Например, если страница со следующим адресом будет загружена: www.example.com?var1 = знач1 & var2 = val2, массив $ _GET будет выглядеть примерно так:

{ 
    'var1' => 'val1', 
    'var2' => 'val2' 
} 

Так, так как $ _GET массив, вы можете применять различные функции к нему. Вы можете проверить, была ли эта переменная/массив задана уже isset ($ _ GET), подсчитать количество элементов в ней ($ _ GET) и т. Д. Ни одна из этих функций фактически не должна искать конкретные значения массива, такие как $ _GET ["var1"], но посмотрите на массив в целом.

В вашем примере $ _GET передается не только какой-либо функции, но и классу, когда экземпляр его инициализируется. Всякий раз, когда объект класса создается, определенная функция называется named constructor. Итак, этот массив $ _GET просто передается в эту конструкторскую функцию. Подробнее о конструкторах читайте здесь: http://php.net/manual/en/language.oop5.decon.php.

Надеюсь, это поможет.

+0

Это очень помогло! благодаря – 2010-10-25 18:11:08

6

Он просто передает массив $_GET до BlahBlahNameconstructor. Конструктор может вытащить все необходимое из массива при создании объекта BlahBlahName.

$_GET не является функцией; скорее, это associative array of variables, указанный в запросе. По какой-то причине w3schools calls it a function; это кажется вводящим в заблуждение. *

Посмотрите на фактический код для функции BlahBlahName__construct() (если вы можете), чтобы увидеть именно то, что он делает с переменной, если вам интересно.

* w3schools с тех пор обновил описание $_GET

+2

Еще одна причина не использовать w3schools, но руководство по PHP или [достойную книгу для изучения PHP] (http://stackoverflow.com/questions/90924/what-is-the-best-php-programming-book) – Gordon

+0

спасибо за великий ответ. – 2010-10-25 18:12:42

0

Это создает новый объект BlahBlahName, используя массив $ _GET. Конструктор, вероятно, анализирует значения в массиве и присваивает их свойствам BlahBlahName.

0

Это вызывает конструктор для BlahBlahName с пропуском $_GET и присваивает его $obj.

0

Было бы передать массив $ _GET в конструктор классаBlahBlahName. $ _GET - это массив переменных, передаваемых в URL-адресе.

http://w3schools.com/PHP/php_get.asp

0

новый BlahBlahName возвращает новый экземпляр объекта/класса переменной $ OBJ. Из этого вы сможете вызывать методы из класса, например. $ obj-> способ(). Класс, о котором он будет использовать, будет BlahBlahName.

В вашем коде вы передаете массив $ _GET в конструктор классов, что по сути бессмысленно, потому что $ _GET является суперглобальным и должно быть доступно во всем коде.

+0

Возможно, все будет хорошо, чтобы развязать код. –

0

Скорее всего, объект фильтра, обертывающий входные массивы PHP. Я использую что-то подобное:

$_REQUEST = new input($_REQUEST); 

Это в основном захватывает бывший $_REQUEST массив и делает это свойство объекта. Object-oriented superglobals

Смежные вопросы