Php oop - каждый класс отличается файлом? пакет импорта? и т.д

Я использую для работы на таких языках, как C#/Java/Python, где каждый класс будет иметь свой собственный файл, а для class - для просмотра других классов. импортировать пакет, содержащий эти классы. Как это работает в php? В документации показано, как создавать классы, но я не понимаю, как все это сочетается в контексте php. Я знаю инструкцию include, которая просто вставляет файлы в основном.

Ответ 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 файле с тем же именем вы можете настроить автозагрузку класса, чтобы вам не нужно было писать ваши включенные.