[owncloud-devel] PSR-4 and Apps

Morris Jobke morris at owncloud.com
Tue May 3 13:21:41 GMT 2016


Hi Joas,

could we get this written down into the documentation? That would be nice ;)

Morris

> Am 03.05.2016 um 10:36 schrieb Joas Schilling <nickvergessen at owncloud.com>:
> 
> Right, I knew I would forget this.
> 
> We register 2 PSR-4 roots for each app:
> 1. OCA\MyApp for apps/myapp/lib/
> 2. OCA\MyApp\Tests for apps/myapp/tests/
> 
> the 2nd root is only registered when the PHPUNIT_RUN constant is defined:
> https://github.com/owncloud/announcementcenter/blob/3a75e64e2664753eee3d0500ed4da541ef995004/tests/bootstrap.php#L22-L24
> 
> This prevents test code from being loaded/executed and doing harm on live instances, since they
> are only ever loaded when running tests.
> 
> What I also forgot to mention was, that the old autoloading is still in place,
> so 9.0 apps will continue working for a while longer ;)
> 
> cheers nickvergessen
> 
> Am 03.05.2016 um 10:29 schrieb Vincent Petry:
>> Does it also affect test classes in some way ? (the ones stored under
>> MyApp/test)
>> 
>> Cheers,
>> 
>> Vincent
>> 
>> On 03.05.2016 10:23, Joas Schilling wrote:
>> 
>>> 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
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Devel mailing list
>>> 
>>> Devel at owncloud.org
>>> http://mailman.owncloud.org/mailman/listinfo/devel
>> 
>> 
>> 
>> _______________________________________________
>> Devel mailing list
>> 
>> Devel at owncloud.org
>> http://mailman.owncloud.org/mailman/listinfo/devel
> 
> _______________________________________________
> Devel mailing list
> Devel at owncloud.org
> http://mailman.owncloud.org/mailman/listinfo/devel

--
ownCloud GmbH - owncloud.com

Your Data, Your Cloud, Your Way!

ownCloud GmbH, GF: Markus Rex, Holger Dyroff, Frank Karlitschek
Schloßäckerstrasse 26a, 90443 Nürnberg, HRB 28050 (AG Nürnberg)




More information about the Devel mailing list