php oop - each class different file? import package? etc
I am used to working in languages such as C#
/Java
/Python
where each class would have its own file, and for a class to see other classes, you would import the package containing those classes. How does this work in php
? The documentation shows you how to create cl开发者_高级运维asses, but I don't understand how it all fits together in a php
context. I know of the include statement, which just sticks the files together basically.
You can use __autoload
function __autoload($class_name) {
include 'classes/'.$class_name . '.php';
}
So place every single class in its own file in the classes folder. When you want to use that class it will include it. More info: http://php.net/manual/en/language.oop5.autoload.php
Update: When I answered this it was fully valid. Now it still works, but keep in mind PHP.net since then says this:
spl_autoload_register() provides a more flexible alternative for autoloading classes. For this reason, using __autoload() is discouraged and may be deprecated or removed in the future.
The easiest way:
- define your classes in "classes" directory
- init application like shown below
- name class filenames as their lowercase class name with .php suffix (MyClass => classes/myclass.php)
Init code:
set_include_path ( "./classes" );
spl_autoload_register ();
//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass ();
As of PHP 5.3.0 , it is recommended that you use the spl_autoload_register() function because __autoload() is said to be deprecated some time in the future.
An easy way to use this function:
1) Place each class file into the 'classes' folder
2) Run an anonymous function inside spl_autoload_register() which specifies your class folder:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
Now when you try to use a class that is not defined in your code yet, it will check that class folder one last time before giving you an error.
Imagine you have been making your object in PHP in a file called myObject.php
<?php
class myObject
{
public function __construct()
{
echo "Hello, World";
}
}
?>
And in another file, you would like to use the object (let's call this myfile.php). You would have to include your object - like this:
<?php
include("myObject.php");
$intance = new myObject();
?>
Quite simple.
In PHP you can do it in various ways, compiler does not limit you.
You can have 1 class in 1 file, 5 classes in 1 file, 1 class across several files using includes...
But usually it's still 1 class in 1 files, and if you have many tiny ones - you can have them in 1 folder too.
When doing 1 class in 1 file with the same name you can set up class autoload so that you don't need to write your includes.
精彩评论