-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Document current bootstrap mechanism
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
- Loading branch information
1 parent
9d31c2a
commit 2ec825d
Showing
3 changed files
with
59 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
============= | ||
Bootstrapping | ||
============= | ||
|
||
Every php process has a relatively short lifespan that lasts as long as the HTTP request or the invokation of the command | ||
line program. At the beginning of this lifespan, Nextcloud initializes its services. At the same time, any additional apps | ||
might want to register their services to Nextcloud as well. This event is called the *bootstrapping* and this chapter | ||
shall shed some light on how to hook into this with an app. | ||
|
||
|
||
.. _app-php: | ||
|
||
app.php | ||
------- | ||
|
||
Nextcloud will ``require_once`` every installed and enabled app's ``appinfo/app.php`` file if it exists. The app can use | ||
this file to run registrations of services, event listeners and similar. | ||
|
||
To leverage the advantages of object-oriented programming, it's recommended to put the logic into an :ref:`application-php` | ||
class and query an instance like | ||
|
||
.. code-block:: php | ||
<?php | ||
declare(strict_types=1); | ||
$app = \OC::$server->query(\OCA\MyApp\AppInfo\Application::class); | ||
$app->registerHooks(); | ||
.. _application-php: | ||
|
||
Application | ||
----------- | ||
|
||
An `Application` class shall serve as central initialization point of an app. | ||
|
||
.. code-block:: php | ||
<?php | ||
declare(strict_types=1); | ||
namespace OCA\MyApp\AppInfo; | ||
use OCP\AppFramework\App; | ||
class Application extends App { | ||
public function registerHooks(): void { | ||
\OCP\Util::connectHook('OC_User', 'pre_deleteUser', 'OCA\MyApp\Hooks\User', 'deleteUser'); | ||
} | ||
} | ||
.. note:: Nextcloud does not load this class for every request. You should query an instance inside your :ref:`app-php` to | ||
load for every request, if desired. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,6 +8,7 @@ App development | |
intro | ||
tutorial | ||
upgrade-guide | ||
bootstrap | ||
npm | ||
javascript-apis | ||
requests/index | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters