What are namespaces in the PHP language?
Dear readers of our blog! In the last article we wrote about two methods of inserting a context advertisement using the PHP language. Today we will consider PHP namespaces, using the simple examples of programming. The good news – the Namespaces are easy. To preview we’ll challenge ourselves to explain it quickly. Let’s go.
Create class in PHP.
<?php class Foo { public function doAwesomeFooThings () { // you should write your code here } } ?>
Me Foo – he is a php 5.2 class, that does a lot of impotent things. Say Hi to the readers:
<?php class Foo { public function doAwesomeFooThings () { echo “Hi, readers!”; } } ?>
Ок. Using Foo is easy: simply new Foo().
<?php require ‘foo.php’; $foo = new Foo(); ?>
To keep up with the times let’s put a new brand php 5.3 Namespace. A Namespace like a directory and by adding namespace, who now lives in Acme\Tools.
<?php // это файл foo.php namespace Acme\Tools; class Foo { public function doAwesomeFooThings () { echo “Hi, readers!”; } } ?>
To use Foo we call him by its fancy new name. This is just the referring to a file with its absolute path.
<?php require ‘foo.php’; $foo = new \Acme\Tools\Foo(); ?>
And that’s really it. Adding a namespace to a class is like organizing files from one directory into a bunch of subdirectories. To refer to a class use it fully qualified name starting with a \.
Since running around but this giant name is a drug, let’s add a shortcut. The use statement let us call \Acme\Tools\Foo() class by a nickname.
<?php require ‘foo.php’; use \Acme\Tools\Foo as SomeFooClass; $foo = new SomeFooClass(); ?>
We can call anything or just led it default to Foo.
<?php require ‘foo.php’; use \Acme\Tools\Foo; $foo = new Foo(); ?>
Great. But what about old school none name space php classes. For that le’s pick on datetime – a handy class that’s called a php. And got some new bells and whistles in php 5.3. For ever and ever creating a new datetime object is the same – new datetime().
<?php require ‘foo.php’; use \Acme\Tools\Foo; $foo = new Foo(); $dt = new DateTime(); ?>
And differ in a normal file this still works. But in a namespace file php think you are talking about class in the Acme\Tools namespace.
<?php namespace Acme\Tools; class Foo { public function doAwesomeFooThings () { echo “Hi, readers!"; // This resolves to \Acme\Tools $dt = new DateTime(); } } ?>
You can either refer to a class by its fully qualified name \Datetime.
<?php namespace Acme\Tools; class Foo { public function doAwesomeFooThings () { echo “Hi, readers!”; // This resolves to global scope $dt = new \DateTime(); } } ?>
Or add a use statement.
<?php namespace Acme\Tools; use \DateTime; class Foo { public function doAwesomeFooThings () { echo “Hi, readers!”; // This resolves to global scope $dt = new DateTime(); } } ?>
The use statement looks silly. But it tells php that when you use datetime you mean a none name space class, state time. Or give of the beginning \ with the use statement. Everything works completely the same with or without it.
<?php namespace Acme\Tools; use DateTime; class Foo { public function doAwesomeFooThings () { echo “Hi, readers!”; // This resolves to global scope $dt = new DateTime(); } } ?>
And we typically don’t see it. OK. Bye!
I just couldn’t depart your web site before suggesting that I really enjoyed the usual information an individual provide in your visitors?
Is going to be back ceaselessly to check out new posts