Files
nextcloud-docs/developer_manual/app/classloader.rst
Sascha Wiswedel bd9ef16c19 purge strings about explicit Nextcloud versions
Versions deprecate fast and aren't needed in upstream documentation branches.

Signed-off-by: Sascha Wiswedel <sascha.wiswedel@nextcloud.com>
2020-06-04 12:48:13 +02:00

35 lines
1.3 KiB
ReStructuredText

.. _appclassloader:
===========
Classloader
===========
.. sectionauthor:: Bernhard Posselt <dev@bernhard-posselt.com>
The classloader is provided by Nextcloud and loads all your classes automatically. The only thing left to include by yourself are 3rdparty libraries. Those should be loaded in :file:`lib/AppInfo/Application.php`.
PSR-4 autoloading
-----------------
Nextcloud uses a PSR-4 autoloader. The namespace **\\OCA\\MyApp**
is mapped to :file:`/apps/myapp/lib/`. Afterwards normal PSR-4 rules apply, so
a folder is a namespace section in the same casing and the class name matches
the file name.
If your appid can not be turned into the namespace by uppercasing the first
character, you can specify it in your **appinfo/info.xml** by providing a field
called **namespace**. The required namespace is the one which comes after the
top level namespace **OCA\\**, e.g.: for **OCA\\MyBeautifulApp\\Some\\OtherClass**
the needed namespace would be **MyBeautifulApp** and would be added to the
info.xml in the following way:
.. code-block:: xml
<?xml version="1.0"?>
<info>
<namespace>MyBeautifulApp</namespace>
<!-- other options here ... -->
</info>
A second PSR-4 root is available when running tests. **\\OCA\\MyApp\\Tests** is
thereby mapped to :file:`/apps/myapp/tests/`.