I can't really seem to call my function within a function with namespaces. I know that
\foo\bar::foo_bar();
Will call this function
function foo_bar() {
return('This is foo_bar');
}
But what if I have a function like so
static function foo_bar() {
function foo() {
return('This is foo');
}
}
I have many other functions within foo_bar
like
static function foo_bar() {
function foo() {
return('This is foo');
}
function bar() {
return('This is bar');
}
}
So I was thinking \foo();
but it just says Fatal error: Call to undefined function foo() in
. Then if I do something like \foo\bar\foo_bar::foo();
, it'll give me this error Fatal error: Class '\foo\bar\foo_bar' not found in
.
How would I go about to call my function within a function?
There are no inner/nested functions/methods/classes in php (yet?).
Once foo_bar() gets executed the function foo() gets declared/defined "outside" any function/method/class, i.e. in your case as a function directly under the namespace \foo
<?php
namespace foo {
class bar {
static function foo_bar() {
// even though function baz() only is declared once foo_bar()
// is invoked
function baz() {
return('This is baz');
}
// the scope where it gets declared is outside
// the function/method and class
}
}
// <--- so that would be here - figuratively speaking
}
namespace lalala {
echo 'baz() exists: ', function_exists('\foo\baz') ? 'yes':'no', "
";
\foo\bar::foo_bar(); // now \foo\baz gets declared
echo 'baz() exists: ', function_exists('\foo\baz') ? 'yes':'no', "
";
echo \foo\baz();
\foo\bar::foo_bar(); // will raise an error
}
prints
baz() exists: no
baz() exists: yes
This is baz
Fatal error: Cannot redeclare foo\baz() (previously declared in ...
It's most likely not what you want ...or if you want it, you shouldn't ;-)