Yes I know global variables is a bad practice, but ease up on that rule for this one :P
My code:
include('something.php'); //where $from is declared
function myfunc() {
global $from;
echo "from(myfunc)=$from<br />";
...
}
echo "from=$from<br />";
myfunc();
The result is:
from=2010-05-01
from(myfunc)=
What's going on? :(
EDIT: If it helps, all the code above is inside a view file in CodeIgniter ( and yes, I know functions are not supposed to be inside views :P )
I'll bet a beer you are not inside the global scope with this snippet. Are you calling this from within a function?
In that case, the $from
you define in something.php
is not global, while the one you reference in the function is.
It will probably work if you add a global $from;
inside something.php
before you define $from
.
Needless to say, it's not a nice practice either way, and you should follow Gordon's advice.
Do yourself a favor and use Dependency Injection.
function myfunc($from) {
return "from(myfunc)=$from<br />";
}
$from = '2010-05-01';
echo myfunc($from);
Doing so will make your code more maintainable, less coupled and more easily unit-testable because it is isolated from the global scope. Plus, when you do it people think you are cool.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With