Let’s say you have file foo.php
with a single function:
<?php
// foo.php
function hello() {
return 'hello from foo';
}
And hello()
is called inside index.php
:
<?php
// index.php
include 'foo.php';
echo hello();
When you run index.php
in your command-line:
php index.php
hello from foo
But what if there’s a file bar.php
that has a function with the same name?
<?php
// bar.php
function hello() {
return 'hello from bar';
}
If you include the file in index.php
:
<?php
// index.php
include 'foo.php';
include 'bar.php';
echo hello();
You will get an error when running index.php
in the command-line:
php index.php
Fatal error: Cannot redeclare hello()
So how do we resolve this? With PHP namespaces.
So let’s namespace foo
:
<?php
// foo.php
namespace foo;
function hello() {
return 'hello from foo';
}
Then namespace bar
:
<?php
// bar.php
namespace bar;
function hello() {
return 'hello from bar';
}
And update index.php
:
<?php
// index.php
include 'foo.php';
include 'bar.php';
echo foo\hello();
echo "\n"; // newline
echo bar\hello();
You should notice that the namespace name and function name are joined by a backslash.
Now when you run index.php
, you should get the expected output:
php index.php
hello from foo
hello from bar