[phpMyAdmin Developers] Question about PSR1

Marc Delisle marc at infomarc.info
Sat Dec 5 16:51:29 CET 2015


Le 2015-12-05 10:21, Richard Damon a écrit :
> On 12/5/15 9:37 AM, Marc Delisle wrote:
>> Le 2015-12-05 09:08, Hugues Peccatte a écrit :
>>>
>>> Le sam. 5 déc. 2015 à 13:57, Marc Delisle <marc at infomarc.info
>>> <mailto:marc at infomarc.info>> a écrit :
>>>
>>>      Hi,
>>>
>>>      We have some PSR1 Scrutinizer warnings in many files. For
>>> example, in
>>>      js/whitelist.php:
>>>
>>>      "For compatibility and reusability of your code, PSR1 recommends
>>> that a
>>>      file should either new symbols (like classes, functions, etc.)
>>> or have
>>>      side-effects (like outputting something, or including other
>>> files), but
>>>      not both at the same time. The first symbol is defined on line
>>> 20 and
>>>      the first side effect is on line 9."
>>>
>>>      Is it true that PSR1 objects to our having a define() statement and
>>>      ordinary code like chdir() in the same file?
>>>
>>>      --
>>>      Marc Delisle | phpMyAdmin
>>>
>>>      _______________________________________________
>>>      Developers mailing list
>>>      Developers at phpmyadmin.net <mailto:Developers at phpmyadmin.net>
>>>      https://lists.phpmyadmin.net/mailman/listinfo/developers
>>>
>>> Hi,
>>>
>>> Yes, that's true because one of the rules is not to have declaration and
>>> logic code in the same file. Define is declaration, chdir is logic.
>>>
>>> H.
>> Do you suggest we ignore this rule? To respect it, we would need to
>> change our constants to something else.
>>
>>
> PSR1 lists this as a 'SHOULD', not a 'MUST'.
> 
> The purpose of this rule, as I understand it, is that 'reusable' stuff
> should be reusable by including the file that define it, and shouldn't
> force some action to be performed. Also, that includes that 'do
> something' may be needed in multiple places, and if they define stuff,
> they can't be multiply included.
> 
> If the define()s are purely for internal usage, and the file has no
> possible reason for wanting to be included twice, then we may fall
> within a valid exception to PSR-1.
> 
> To be strictly meeting it, the definitions (define() etc) should be
> factored out into an include file that is required_once.
> 

I find it overkill to move one line of define() to an include file. A
possible way to comply with PSR1 in this situation would be the following.

In js/whitelist.php, replace the define() with
$pmaMinimumCommon = true;

In libraries/common.inc.php replace the if (! defined()) with
if (! pmaMinimumCommon)

-- 
Marc Delisle | phpMyAdmin



More information about the Developers mailing list