Я использую для работы на таких языках, как C#
/Java
/Python
, где каждый класс будет иметь свой собственный файл, а для class - для просмотра других классов. импортировать пакет, содержащий эти классы. Как это работает в php
? В документации показано, как создавать классы, но я не понимаю, как все это сочетается в контексте php
. Я знаю инструкцию include, которая просто вставляет файлы в основном.
Php oop - каждый класс отличается файлом? пакет импорта? и т.д
Ответ 1
Вы можете использовать __autoload
function __autoload($class_name) {
include 'classes/'.$class_name . '.php';
}
Поэтому поместите каждый отдельный класс в свой собственный файл в папку классов. Когда вы захотите использовать этот класс, он включит его. Дополнительная информация: http://php.net/manual/en/language.oop5.autoload.php
Обновление:. Когда я ответил на это, он был полностью работоспособен. Теперь он все еще работает, но имейте в виду, PHP.net с тех пор говорит следующее:
spl_autoload_register() предоставляет более гибкую альтернативу для автозагрузка классов. По этой причине использование __autoload() обескуражен и может быть устаревшим или удаленным в будущем.
Ответ 2
Самый простой способ:
- определить классы в каталоге "classes"
- init, как показано ниже.
- имена имен классов имен в качестве имени нижнего регистра с .php суффиксом (Myclass= > classes/myclass.php)
Код инициализации:
set_include_path ( "./classes" );
spl_autoload_register ();
//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass ();
Ответ 3
Как и в случае с PHP 5.3.0, рекомендуется использовать функцию spl_autoload_register(), поскольку __autoload() считается устаревшим в будущем.
Простой способ использования этой функции:
1) Поместите каждый файл класса в папку 'classes'
2) Запустите анонимную функцию внутри spl_autoload_register(), которая указывает вашу папку класса:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
Теперь, когда вы пытаетесь использовать класс, который еще не определен в вашем коде, он будет проверять эту папку класса в последний раз, прежде чем вы получите сообщение об ошибке.
Ответ 4
Представьте, что вы делали свой объект на PHP в файле myObject.php
<?php
class myObject
{
public function __construct()
{
echo "Hello, World";
}
}
?>
И в другом файле вы хотели бы использовать объект (позвоните в этот файл myfile.php). Вы должны включить свой объект - например:
<?php
include("myObject.php");
$intance = new myObject();
?>
Довольно просто.
Ответ 5
В PHP вы можете делать это различными способами, компилятор не ограничивает вас.
У вас может быть 1 класс в 1 файле, 5 классов в 1 файл, 1 класс для нескольких файлов, включая...
Но обычно он все еще 1 класс в 1 файле, и если у вас много крошечных, вы можете также иметь их в одной папке.
При выполнении 1 класса в 1 файле с тем же именем вы можете настроить автозагрузку класса, чтобы вам не нужно было писать ваши включенные.