Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
php > class Foo { function test() { return 'test'; } }
php > Foo::test();
php > echo Foo::test();
test
php > function test() { return 'another test'; }
php > echo test();
another test
// separator.cpp
#include <stdio.h>
namespace space
{
void printf(const char * text)
{
::printf(text);
}
}
class Class
{
public:
static void printf(const char * text)
{
::printf(text);
}
};
int main()
{
::printf("global\n");
space::printf("space\n");
Class::printf("class\n");
return 0;
}
$ g++ separator.cpp -o separator && ./separator
global
space
class
\ ** ^^ %% :> :) :::,set default namespace MyNamespaceПреимуществом такого подхода по мнению разработчиков патча является то, что \используется\для\разделения\элементов\пути в Windows и потому будет интуитивно понятным для программистов из мира Windows
\this\is\used for paths on Windows and is intuitively familiar to those developers. According to a php|arch survey (as relayed by Steph Fox), most of their readers develop on Windows and deploy on Unix, which would imply that \these\paths are familiar
\this\maps\to\filesystem layouts often used by autoload intuitively for the above reason
a:b();
p.s. я вижу другую причину отказа от :: которой как раз не было на момент создания namespace, но чтобы не подбрасывать огоньку промолчу. а то приведённые причины смехотворны.
$err = new @PEAR2@MultiErrors;$wp = 8() @fopen($dest_file, "wb");
php > function foo() { return array('bar' => 'hello'); }
php > echo foo()['bar'];
Parse error: syntax error, unexpected '[', expecting ',' or ';' in php shell code on line 1
php > $foo = foo();
php > echo $foo['bar'];
hello
# Этот метод лежит где-то. Предупреждая ваши вопросы - он очень сложный и возвращает кучу полей
php > function foo() { return array('bar' => 'hello', 'zzz' => 'some'); }
# Но нам нуждно одно поле! Одно!
# Например, это 'bar'
php > function fooBar() { $foo = foo(); return $foo['bar']; }
php > echo fooBar();
# А можно еще так
# И вновь предупреждая буквоедство - рассматриваем вариант в котором из одной выборки необходимо одно значение
php > function fooField($field) { $foo = foo(); return $foo[$field]; }
php > echo fooField('bar');
hello
Преимуществом такого подхода по мнению разработчиков патча является то, что \используется\для\разделения\элементов\пути в Windows и потому будет интуитивно понятным для программистов из мира Windows (По результатам опроса большинство читателей php|architect ведут раработку на Windows, а на Unix лишь деплоят работу :-)).
Foo::Bar()
Разделитель в пространствах имен в PHP