Начальная директория в PEAR-именовании

Вурдалак

Продвинутый новичок
Духовность™, ты понимаешь, что use — вещь необязательная, это только дополнение к namespaces? Ты можешь писать те же длинные имена, отличие будет только в разделителе:
PHP:
new Cue\Model\Person\User
То вроде бы тебя убивают длинные имена:
блин, это получается у мменя имена классов будут вот такие - MyPrefix_Module_Common_Controller_Common

это же очленеть можно будет с таким работать!!
, то ты тут же заявляешь:
PEAR стиль в коде явно показывает, что за класс мы инстанцируем, а неймспейсы это скрывают.
, т.е. по-твоему длинное имя — хорошо, оно же явно показывает, что за класс мы инстанцируем.

Так в чём проблема на самом деле?
 

AmdY

Пью пиво
Команда форума
задача неймспейса как раз и заключается в скрытии того, какой класс инстанцируется. use служит для управления зависимостями, а если имена применять полные - то смысл использовать namespace нету.
 

tz-lom

Продвинутый новичок
AmdY
есть наследование пространств а есть алиасы
в принципе наследование пространств немного калечное(нельзя сослаться на уровень выше) , поэтому можно делать виртуальные пространства и подкреплять их алиасами
в любом случае пространства имён ещё и замыкания для переменных и функций,что тоже юзабельно

PEAR это наследние PHP4 , в нём есть очень приличные библиотеки но писать новые в стандарте PEAR лично я смысла не вижу
 

Духовность™

Продвинутый новичок
фууу
пришлось во всем своем проекте добавлять префикс к классам
задача оказалась очень сложная. пришлось много ручками поработать.
 

craz

Нестандартное звание
http://framework.zend.com/apidoc/1.11/ глянь

правда у них нету вложенности выше 4 то есть Zend_Stage1_Stage2_Stage3_Stage4 - во всяком случае на вскидку не вспоминается, возможно выглядит и убого, но все таки это удобно.
 

Alien85

I like my cat
PHP:
<?php
namespace Cue\Application\ChildrenClub;

use Cue\Utility\Validator\ValidatorHelper,
    Cue\Core\Request,
    Cue\Model\Contest\Contest,
    Cue\Model\Contest\ContestItem,
    Cue\Model\Contest\ContestRating,
    Cue\Model\Person\User;

class CitationContestController extends BaseContestController
{ ....
это что за хрень? Зачем для каждого класса свое пространство имен?

PHP:
<?php
namespace MyFramework;

use Libs\Database;

class newClass extends Database\Mysql
{ ....
во всем твоем фреймворке будет одно пространство имен (его можно даже не указывать!!!), а во всех подключаемых библиотеках собственные пространства! Например "\DbSimple"
 

cDLEON

Онанист РНРСlub
Он говорит, что ты соврал, когда говорил:
нет, я полгода работал с неймспейсами.
Не знаешь даже базовых возможностей.
И всё это выглядит примерно так: "Не читал, но осуждаю!"
 
  • Like
Реакции: Koc

Koc

Новичок
ну как. Неймспейсами необходимо отделять логические части кода.
 

Духовность™

Продвинутый новичок
Он говорит, что ты соврал
епт, ничего я не врал. Полгода я так и писал, как это показано выше, как ведущий писал, так и я писал.

это что за хрень? Зачем для каждого класса свое пространство имен?
где вы в примере выше видите пространство имен для каждого класса?
 

cDLEON

Онанист РНРСlub
use Cue\Utility\Validator\ValidatorHelper,
Cue\Core\Request,
Cue\Model\Contest\Contest,
Cue\Model\Contest\ContestItem,
Cue\Model\Contest\ContestRating,
Cue\Model\Person\User;
Всё это - классы, я так понимаю.
А можно было сделать так:
PHP:
use Cue\Model;
$user = new Model\Person\User();
$contest = new Model\Contest\Contest();
 
Сверху