[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу понять синтаксис.
iVasya
1) Читаю про пространства имен. Не могу понять, что означает след. строка:
use Symfony\Component\HttpFoundation\Request;

Если бы было так: use Symfony\Request, то тогда все понятно. Есть класс Request и он обернут в пространство имен под названием Symfony.

Но что еще за \Component\HttpFoundation\? На что они указывают? Не может ведь пространство имен называться "Symfony\Component\HttpFoundation\". В мануалах говорят, что это "прдпространства" разделяются знаком "\" и в этих же мануалах говорит, что
"Невозможно вкладывать в пространство имен другие пространства имен, или определять более чем одно пространство имен для одной и той же части кода".

Буду очень признателен, если на простом наглядном примере объясните как эти вложености работают.

2) Читаю манул по микрофреймворку Silex (обезжиреный Symfony)
http://silex.sensiolabs.org/doc/usage.html
Не могу понять след. синтаксическую конструкцию:


$app = new Silex\Application();
use Symfony\Component\HttpFoundation\Request;

$mustBeAnonymous = function (Request $request) use ($app) {
if ($app['session']->has('userId')) {
return $app->redirect('/user/logout');
}
}
;


2.1) Не понимаю что это такое мы передаем в аргумент анонимной функции
function (Request $request)
2.2) Не понимаю что означает идущее следом
use ($app)

Буду очень признательным за ответы



Спустя 9 минут, 52 секунды (24.05.2012 - 16:50) Invis1ble написал(а):
1. Да, Request - это подпространство
2.1 Request $resuest - контроль типа, означает, что аргументом может быть объект типа Request либо один из его наследников
http://php.net/manual/ru/language.oop5.typehinting.php
2.2. Замыкание, в ф-цию "попадает" $app
http://php.net/manual/ru/functions.anonymous.php

В целом, кури мануал и будет счастье

Спустя 15 минут, 13 секунд (24.05.2012 - 17:06) iVasya написал(а):
Ок, по поводу 2.1 и 2.2 в целом понятно, но я никак не могу разобраться с 1 пунктом
http://ru2.php.net/manual/ru/language.namespaces.nested.php
Судя по тому, что пишут тут, контрукция
use Symfony\Component\HttpFoundation\Request;

означает, что в пространстве имен Symfony определено пространстов Component, в нем HttpFoundation и уже в нем есть класс Request? Но это похоже на бред.
Можете пояснить на данном примере что есть Component и что есть HttpFoundation?

Спустя 2 минуты, 38 секунд (24.05.2012 - 17:08) Invis1ble написал(а):
Почему похоже на бред? Мухи отдельно, котлеты отдельно.
Все это подпространства различных уровней вложенности.

Спустя 10 минут, 55 секунд (24.05.2012 - 17:19) iVasya написал(а):
Тоесть будет что-то типа:


namespace Symfony {
class one {}
namespace Component {
class two {}
namespace HttpFoundation {
class Request {}
}
}
}

да?

Спустя 1 час, 36 минут, 53 секунды (24.05.2012 - 18:56) johniek_comp написал(а):
iVasya
по моему, классы должны наследоваться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.