[owncloud-devel] PSR-4 and Apps

Joas Schilling nickvergessen at owncloud.com
Tue May 3 08:23:39 GMT 2016


Hi there,

today we merged a PR that also allows apps to use PSR-4 compatible 
autoloading standard.
If you don't know what PSR-4 is, it means that files and folders have 
the exact same name
and casing, the class or namespace has.

Let me give you an example:
* ownCloud <9.1: OCA\MyApp\Namespace\ClassName used to lie in 
apps/myapp/namespace/classname.php or apps/myapp/lib/namespace/classname.php
* PSR-4: OCA\MyApp\Namespace\ClassName lies in 
apps/myapp/lib/Namespace/ClassName.php

By default ownCloud just uppercases the first character of your app ID 
to guess the namespace.
If that is not your namespace (e.g. because you use MyApp instead of 
Myapp), you can specify that in your info.xml:
https://github.com/owncloud/announcementcenter/blob/3a75e64e2664753eee3d0500ed4da541ef995004/appinfo/info.xml#L9

You should only put namespaced classes into the lib/ folder. Any 
non-class code should remain outside
of that directory. E.g. app.php, update.php, install.php, route.php from 
the appinfo/ folder can stay there
https://github.com/owncloud/announcementcenter/tree/3a75e64e2664753eee3d0500ed4da541ef995004/appinfo
while all classes are moved to lib/ using camelcases
https://github.com/owncloud/announcementcenter/tree/3a75e64e2664753eee3d0500ed4da541ef995004/lib

The biggest advantage of the PSR-4 change are:
* we can stop maintaining our own code for loading files
* we can use speed improvements from composers autoloading by compiling 
a list of classes on release
* we follow a standard and make it easier for people to get in

cheers nickvergessen

Am 02.05.2016 um 07:57 schrieb Roeland Douma:
> Howdy!
>
> We are slowly moving the classes in core to the PSR-4 [1] naming standard.
> This allows for easier lookup and using the well known composer autoloader.
>
> At the moment we do not yet support PSR-4 in our apps. But we are thinking about
> how to do this. Of course we will still support the current autoloader as well.
>
> There should not be any breakage for app developers. As long as you spell the namespaces
> and classes correct :)
>
> Cheers,
> --Roeland
>
>
> [1] http://www.php-fig.org/psr/psr-4/
>
>
>
> _______________________________________________
> Devel mailing list
> Devel at owncloud.org
> http://mailman.owncloud.org/mailman/listinfo/devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.owncloud.org/pipermail/devel/attachments/20160503/242a2bd5/attachment.html>


More information about the Devel mailing list