Re: Question about Code Style
| From: | Jesús Espino | Date: | Wed, 18 Aug 2010 15:02:37 +0000 |
| Subject: | Re: Question about Code Style | ||
| References: | 1 2 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-53682@lists.php.net to get a copy of this message | ||
Thanks, I think i will ignore the PHPCS warnings, i think is the best
solution because is not a "real" php code file, is more like a data
store.
Greetings.
2010/8/18 Michael Gauthier <mike@silverorange.com>:
> On Mon, 2010-08-16 at 21:58 +0200, Jesús Espino wrote:
>> Hi:
>>
>> I have a problem to remove some (1137) Warnings of PHPCS on PHP_Shell package.
>>
>> I have a file with prototypes of functions, builded like the example:
>>
>>
>> protected $prototype = array (
>> 'XMLReader::close' => array (
>> 'return' => 'boolean',
>> 'params' => '',
>> 'description' => 'Closes xmlreader - current frees
>> resources until xmlTextReaderClose is fixed in libxml',
>> ),
>> 'XMLReader::getAttribute' => array (
>> 'return' => 'string',
>> 'params' => 'string name',
>> 'description' => 'Get value of an attribute from
>> current element',
>> ),
>> ...
>> );
>>
>> The problem is the description field, i can't wrap to 80 characters
>> without changing the meaning.
>>
>> I can't concatenate in various strings in various lines because is a
>> dictionary and not accept the "." operator.
>>
>> Any eficient porpose?? Must be eficient, because the file is included
>> in the main Class and is really big (588K).
>>
>
> Hi Jesús,
>
> You can, in fact, concatenate strings in an array definition in PHP. The
> following code is valid, for example:
>
> $prototype = array(
> 'test' => 'foo' . 'bar',
> );
>
> The specific problem you're running into here is you can _only_ assign
> literals as default values for instance variables. There are a couple of
> things you could do here:
>
> 1.) Do nothing. PHPCS won't pass, but not being able to wrap lines in
> default values seems like a PHP limitation, not poor coding style.
>
> 2.) Initialize the property as an empty array in the class definition
> and properly initialize it during class construction. If the property is
> also static, create a static initializer that runs when the first call
> to construct is made. Example:
>
> <?php
>
> class Foo
> {
> protected $bar = array();
> protected static $staticBar = array();
>
> public function __construct()
> {
> // initialize 'bar' using string concatenation
> $this->bar = array('foo' => 'bar' . 'baz');
>
> // static initialization of 'staticBar' happens only once
> static $initialized = false;
> if (!$initialized) {
> self::$staticBar = array('foo' => 'bar' .
> 'baz');
> $initialized = true;
> }
> }
> }
>
> ?>
>
> Hope this helps.
>
> Cheers,
>
>
> Mike
>
>