Re: hubzilla legacy code (files module)
| From: | AllenJB | Date: | Wed, 01 Sep 2021 19:14:07 +0000 |
| Subject: | Re: hubzilla legacy code (files module) | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327647@lists.php.net to get a copy of this message | ||
On 01/09/2021 19:33, ourdiaspora wrote:
Line 8 refers to another file with the key word 'use', but a user contributor comment to the php manual (https://www.php.net/manual/en/language.namespaces.php) states there are two possible applications?
use (in this case) refers not (directly) to a filename or path, but a namespace. In the vast majority of cases, you'll find these are set up using Composer's built-in autoloader, so checking the project composer.json will give you the "root" of the namespace. From there you can basically follow the directory structure.
This behavior is defined in PSR-4: https://www.php-fig.org/psr/psr-4/
You can read more on autoloading in the manual: https://www.php.net/manual/en/language.oop5.autoload.php
It's possible to specify custom autoloading schemas, and Composer supports other autoloading methods ( https://getcomposer.org/doc/04-schema.md#autoload ) but PSR-4 is by far the most common.
The other place you'll see the use keyword used is with anonymous functions to inherit variables from the parent scope: https://www.php.net/manual/en/functions.anonymous.php#example-163
The 2 usages are quite distinct and not easy to confuse (the former is almost always at the top of the file, the latter is always in a function declaration)
Line 6 of the next file (https://framagit.org/hubzilla/core/-/blob/master/Zotlabs/Lib/Libsync.php) refers to keyword 'use' some object 'App'; where to find that???The class
App has been defined in the boot.php file in the root of the project: https://framagit.org/hubzilla/core/-/blob/master/boot.php
(Since the App class is in the root (\) namespace I found it by starting from the "index.php" in the project root and found the boot.php included by Zotlabs\Web\Webserver)