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 as below, or enter http://melksh.am/nnnn for individual articles
H108 - Objects in PHP [67] Object Oriented Programming in PHP - (2004-09-29)
[124] PHP v Java - (2004-11-20)
[205] PHP5 lets you say no - (2005-02-07)
[343] Should I use structured or object oriented? - (2005-06-10)
[421] Don't repeat code - use loops or functions - (2005-08-21)
[485] North, Norther and Northest - PHP 5 Objects - (2005-11-04)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[720] Planning a hotel refurb - an example of a Gant chart in PHP - (2006-05-14)
[836] Build on what you already have with OO - (2006-08-17)
[1027] Cue the music, I'm happy. - (2007-01-09)
[1153] Object Oriented Model - a summary of changes from PHP4 to PHP5 - (2007-04-18)
[1217] What are factory and singleton classes? - (2007-06-04)
[1535] OO PHP demonstration - comparing objects and more - (2008-02-08)
[1682] Accounts in PHP - an OO demo - (2008-06-19)
[1819] Calling base class constructors - (2008-10-03)
[1820] Sorting objects in PHP - (2008-10-04)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[2160] PHP - getclass v instanceof - (2009-05-07)
[2169] When should I use OO techniques? - (2009-05-11)
[2171] Cleaning up redundant objects - (2009-05-11)
[2172] PHP4 v PHP5 - Object Model Difference - (2009-05-11)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2632] Shipping a test harness with your class in PHP - (2010-02-12)
[2641] Object Oriented Programming in PHP - (2010-02-19)
[2680] Static class members in PHP - a documented example - (2010-03-16)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2741] What is a factory? - (2010-04-26)
[2774] PHP - Object Oriented Design in use - (2010-05-21)
[2921] Does copying a variable duplicate the contents? - (2010-08-14)
[2922] Getting the OO design write - with PHP a example - (2010-08-14)
[3142] Private and Public - and things between - (2011-01-22)
[3210] Catchable fatal error in PHP ... How to catch, and alternative solutions such as JSON - (2011-03-22)
[3211] Computer Graphics in PHP - World (incoming data) to Pixel (screen) conversion - (2011-03-24)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3608] Design Patterns - what are they? Why use them? - (2012-02-12)
[3609] How do classes relate to each other? Associated Classes - (2012-02-12)
[3841] Copying, duplicating, cloning an object in PHP - (2012-08-18)
[3843] Caching Design Patterns - (2012-08-20)
[3953] Objects in PHP - Revision - (2012-12-16)
[4057] stdClass in PHP - using an object rather than an associative array - (2013-04-02)
[4073] Learning about Object Orientation in PHP - a new set of examples - (2013-04-28)
[4356] Object factories in C++, Python, PHP and Perl - (2014-12-19)
[4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
[4626] Singleton design pattern - examples and uses - (2016-01-20)
[4627] Caching results in an object for efficiency - avoiding re-calculation - (2016-01-20)
[4628] Associative objects - one object within another. - (2016-01-20)
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?