You can load one file of source from within another in PHP using
require or
include ... and if you do so directly, you need to manage your calls to them, as if you load a class or function twice, PHP will object. The alternatives
require_once and
inlcude_once are good, but if you keep calling them with a loop they can get rather inefficient, constantly checking if file has been loaded and skipping on if it has. There is a third way ...
If you provide a function called
__autoload in your main program, that will be called when you try to create an object in a class which has not been loaded, and you can then "just in time" load the class. Your
__autoload will take a single parameter - the name of the class to be loaded. Let's see an example.
Here is a piece of code:
$bob = new roots("Ginger");
print "I have created bob\n";
$bobis = $bob->gettype();
print "Bob is a $bobis tree\n";
and here's what happens when I run it without the class loaded, and without an
__autoload
PHP Fatal error: Class 'roots' not found in /var/www/oo/aa.php on line 10
By adding the following
__autoload:
function __autoload ($why) {
print ("I don't know about my $why\n");
include("twigs.inc");
}
The result becomes
trainee@brugges:/var/www/oo$ php aa.php
I don't know about my roots
I have created bob
Bob is a Ginger tree
trainee@brugges:/var/www/oo$
Full source code
[here] and the loaded class
[here]. Example from our
Object Oriented Programming in PHP course.
(written 2012-08-17, updated 2012-08-19)
Associated topics are indexed under
H108 - Objects in PHP [4073] Learning about Object Orientation in PHP - a new set of examples - (2013-04-28)
[4057] stdClass in PHP - using an object rather than an associative array - (2013-04-02)
[3953] Objects in PHP - Revision - (2012-12-16)
[3843] Caching Design Patterns - (2012-08-20)
[3841] Copying, duplicating, cloning an object in PHP - (2012-08-18)
[3609] How do classes relate to each other? Associated Classes - (2012-02-12)
[3608] Design Patterns - what are they? Why use them? - (2012-02-12)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3211] Computer Graphics in PHP - World (incoming data) to Pixel (screen) conversion - (2011-03-24)
[3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
[3142] Private and Public - and things between - (2011-01-22)
[2922] Getting the OO design write - with PHP a example - (2010-08-14)
[2921] Does copying a variable duplicate the contents? - (2010-08-14)
[2774] PHP - Object Oriented Design in use - (2010-05-21)
[2741] What is a factory? - (2010-04-26)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2680] Static class members in PHP - a documented example - (2010-03-16)
[2641] Object Oriented Programming in PHP - (2010-02-19)
[2632] Shipping a test harness with your class in PHP - (2010-02-12)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)
[2171] Cleaning up redundant objects - (2009-05-11)
[2169] When should I use OO techniques? - (2009-05-11)
[2160] PHP - getclass v instanceof - (2009-05-07)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[1820] Sorting objects in PHP - (2008-10-04)
[1819] Calling base class constructors - (2008-10-03)
[1682] Accounts in PHP - an OO demo - (2008-06-19)
[1535] OO PHP demonstration - comparing objects and more - (2008-02-08)
[1217] What are factory and singleton classes? - (2007-06-04)
[1153] Object Oriented Model - a summary of changes from PHP4 to PHP5 - (2007-04-18)
[1027] Cue the music, I'm happy. - (2007-01-09)
[836] Build on what you already have with OO - (2006-08-17)
[720] Planning a hotel refurb - an example of a Gant chart in PHP - (2006-05-14)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[343] Should I use structured or object oriented? - (2005-06-10)
[205] PHP5 lets you say no - (2005-02-07)
[124] PHP v Java - (2004-11-20)
[67] Object Oriented Programming in PHP - (2004-09-29)
5337
Some other Articles
Rooms ready for guests - each time, every time, thanks to good system designRelax at Well House Manor - gardens, fountain, hotelAutoload in PHPSpraying data from one incoming to series of outgoing files in PerlGuest review - Well House Manor, MelkshamEvening behind Melksham SpaIn the garden at Well House ManorThe Information age - not yet truly with us?