In an effort to separate PHP code as much as possible from the HTML code I use the following self-enforced standard:
* all PHP functions are above the <!DOCTYPE> or <HTML>
* the last function in the list in the PHP block is a function called main()
* within the <BODY> element the first thing I do to initialize the page is to make a call to the main function
This results in code looking like this:
<?php
function xxx() { }
function yyy() { }
function main() {
xxx() // execute call to other function
}
?>
<HTML>
<BODY>
<?php main() ?>
</BODY>
</HTML>
This way I hope my code will be readable for newbies and advanced programmers.
main
main — Dummy for main()
Description
There is no function named main() except in the PHP source. In PHP 4.3.0, a new type of error handling in the PHP source (php_error_docref) was introduced. One feature is to provide links to a manual page in PHP error messages when the PHP directives html_errors (on by default) and docref_root (on by default until PHP 4.3.2) are set.
Sometimes error messages refer to a manual page for the function main() which is why this page exists. Please add a user comment below that mentions what PHP function caused the error that linked to main() and it will be fixed and properly documented.
| Function name | No longer points here as of |
|---|---|
| include() | 5.1.0 |
| include_once() | 5.1.0 |
| require() | 5.1.0 |
| require_once() | 5.1.0 |
main
yves dot vanhal at hogent dot be
28-Nov-2008 06:09
28-Nov-2008 06:09
penny at mjollnir dot org
04-Jul-2008 04:29
04-Jul-2008 04:29
if like me, you're working inside a framework where you can't require the file with the class definition before session_start is called, I found the following workaround:
$whatever = unserialize(serialize($_SESSION['whatevever']));
dirty hackish, but works.
Anonymous
26-Jun-2008 04:32
26-Jun-2008 04:32
In addition to Maurice's comments:
the "The script tried to execute a method or access a property of an incomplete object" message can appear also if you store your objects in session, and rename class during that session.
For example, you have class "class_name", and there is a class variable "$class_var = new class_name".
If you decide to rename your class, you would have "$class_var = new class_new_name".
This re-naming will result in abovementioned error message if you store $class_var in session.
Solution: clean-up session variable, then error disappears.
deryckchan [ATT] gmail D0T C0M
21-Feb-2008 07:10
21-Feb-2008 07:10
To put it simple: main() refers to anything running in the current PHP script file that isn't part of any function.
MagicalTux at kinoko dot fr
27-Nov-2007 10:31
27-Nov-2007 10:31
Additional note about what Maurice said: you can also use an __autoload function which will get called as the session/var is unserialized.
This will allow you to not preload all possible classes before loading a session, and let them be loaded dynamically. Check http://php.net/oop5.autoload for more details about this magic function.
Maurice
01-May-2006 11:12
01-May-2006 11:12
Notice: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "<classname>" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in <filename> on line <line>
You get this error if you have and object in your $_SESSION array and you call session_start() before you have loaded your included classes.
