Можете ли вы определить свой собственный разделитель пространства имен в PHP? - PullRequest
2 голосов
/ 23 декабря 2011

Пример использования пространства имен в PHP ...

use \MyLibrary\Registry;
use \MyLibrary\User;
use \MyLibrary\Request;

namespace MyLibrary\Base
{
    class Base
    {
        public $registry;

        function __construct($registry)
        {
            $this->registry = $registry;
            $this->user = New User;
            $this->request = new Request;
            # code...
        }
    }
}

Теперь в C # разделитель пространства имен выглядит примерно так ...

using MyLibrary.Registry;
using MyLibrary.User;
using MyLibrary.Request;

namespace MyLibrary.Base
{
    public partial class Base
    {
        public MyFunction(registry)
        {
            Code here
        }
    }
}

Так что я знаю, что есть многожалобы на разделитель пространства имен PHP, настолько плохие, что некоторые люди даже не используют их, потому что они ненавидят текущую обратную косую черту.

Так что мне любопытно, есть ли способ определить свой собственный разделитель пространства имен, который будет использоватьсяв PHP?

Ответы [ 2 ]

5 голосов
/ 23 декабря 2011

Боюсь, вы не можете, это жестко связано с языком. В любом случае такую ​​вещь было бы действительно трудно сделать, поскольку другим символам уже присвоены значения в PHP (.

2 голосов
/ 23 декабря 2011

Нет, это не ответ.Это просто вопрос накладных расходов, конечно.Помимо упомянутого переопределения во время компиляции, вы можете использовать препроцессор для желаемого эффекта.(Только эффект, а не фактическое изменение языка.)

Существует, например, pihipi, который определил стандартный разделитель пространства имен C ++ esque до PHP 5.3.И в качестве второго примера есть препроцессор phpp , хотя он позволяет только включать / отключать пространства имен.

Использование ., как в языках класса Java, немного неоднозначно и не можетбыть разумно эмулированным в препроцессоре.Это возможно во время выполнения, но не в PHP, и не без уступок по поводу отдельных плоскостей идентификаторов.Использование :: было бы выполнимо, но пока никто не беспокоился.(Может быть, попытка реализации Quercus PHP, не уверен.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...