Re: casting static property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Newbie :(

On Sun, Aug 31, 2008 at 8:37 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:
> Diogo Neves schreef:
>>
>> Hi again,
>>
>> There's what you need ( I think )
>
> not so much that I need it, but the easier you make it
> for some one to look at your issue the more likely it is
> someone will. :-)
>
>> Simplified version for web:
>> http://pastebin.com/d2bfcf495
>>
>> Simplified version for CLI:
>> http://pastebin.com/d6ab96ed0
>
> good stuff. only I don't get what your trying to show, exactly.
> seems like your confused between instance (object) properties
> and class (static) properties.
>
> in your example $this->e and $this->f don't exist as instance
> properties ... this becomes clear if you set error_reporting to
> include E_NOTICES. the static properties $e and $f should be
> referred to in code as follows:
>
> class Foo {
>        private $d = 1;
>        static private $e = 2;
>
>        public function test() {
>                echo "\$this->d = ", $this->d, "\nself::\$e = ", self::$e,
> "\n";
>        }
> }
>
> $foo = new Foo;
> $foo->test();
>
> PS, another tip when writing simple test code for the CLI, always use *only*
> double quotes in such code ... this allows people to cut and paste the code
> directly onto the cmdline (not sure this will work on windows btw) e.g.
>
> $> php -r 'class Foo { static private $f = 1; function test() { echo
> "\$this->e = {$this->e}"; }}'
>
>> On Sun, Aug 31, 2008 at 7:09 PM, Jochem Maas <jochem@xxxxxxxxxxxxx> wrote:
>>>
>>> Diogo Neves schreef:
>>>>
>>>> Sorry, i have no webserver... but I can send all code in the email,
>>>> right?
>>>>
>>> you can use pastebin.com.
>>>
>>> I also recommend you write reproduce/example code like this for
>>> the CLI so that other people don't have to go throught the hassle
>>> of running via a webserver (<br /> is not very helpful in terms of
>>> readability
>>>
>>>> <?php
>>>> define('a', 0);
>>>> $b = 0;
>>>>
>>>> class foo {
>>>>   private $c = 0;
>>>>   private static $e = 0;
>>>>   private static $f = '0';
>>>>   public function techo() {
>>>>       echo ' direct -->' . 0 . '<br />';
>>>>       echo ' a --> ' . a . '<br />';
>>>>       echo ' (string)a --> ' . (string)a . '<br />';
>>>>       global $b;
>>>>       echo ' b --> ' . $b . '<br />';
>>>>       echo ' c --> ' . $this->c . '<br />';
>>>>       $d = 0;
>>>>       echo ' d --> ' . $d . '<br />';
>>>>       echo ' e --> ' . $this->e . '<br />';
>>>>       // OK, static creates a reference, so?
>>>>       echo ' (int)e --> ' . (int)$this->e . '<br />';
>>>>       echo ' (string)e --> ' . (string)$this->e . '<br />';
>>>>       // What? Why?
>>>>       echo ' f --> ' . $this->f . '<br />';
>>>>       // OK, static creates a reference, so?
>>>>       echo ' (int)f --> ' . (int)$this->f . '<br />';
>>>>       echo ' (string)f --> ' . (string)$this->f . '<br />';
>>>>       // What? Why?
>>>>   }
>>>>
>>>>   public function techo2() {
>>>>       echo ' direct -->', 0, '<br />';
>>>>       echo ' a --> ', a, '<br />';
>>>>       echo ' (string)a --> ', (string)a, '<br />';
>>>>       global $b;
>>>>       echo ' b --> ', $b, '<br />';
>>>>       echo ' c --> ', $this->c, '<br />';
>>>>       $d = 0;
>>>>       echo ' d --> ', $d, '<br />';
>>>>       echo ' e --> ', $this->e, '<br />';
>>>>       // OK, static creates a reference, so?
>>>>       echo ' (int)e --> ', (int)$this->e, '<br />';
>>>>       echo ' (string)e --> ', (string)$this->e, '<br />';
>>>>       // What? Why?
>>>>       echo ' f --> ', $this->f, '<br />';
>>>>       // OK, static creates a reference, so?
>>>>       echo ' (int)f --> ', (int)$this->f, '<br />';
>>>>       echo ' (string)f --> ', (string)$this->f, '<br />';
>>>>       // What? Why?
>>>>   }
>>>>
>>>>   public function techo3() {
>>>>       global $b;
>>>>       $d = 0;
>>>>
>>>>       echo ' direct -->', 0, '<br />',
>>>>            ' a --> ', a, '<br />',
>>>>            ' (string)a --> ', (string)a, '<br />',
>>>>            ' b --> ', $b, '<br />',
>>>>            ' c --> ', $this->c, '<br />',
>>>>            ' d --> ', $d, '<br />',
>>>>            ' e --> ', $this->e, '<br />',
>>>>       // OK, static creates a reference, so?
>>>>            ' (int)e --> ', (int)$this->e, '<br />',
>>>>            ' (string)e --> ', (string)$this->e, '<br />',
>>>>       // What? Why?
>>>>            ' f --> ', $this->f, '<br />',
>>>>       // OK, static creates a reference, so?
>>>>            ' (int)f --> ', (int)$this->f, '<br />',
>>>>            ' (string)f --> ', (string)$this->f, '<br />';
>>>>       // What? Why?
>>>>   }
>>>> }
>>>>
>>>> $foo = new foo( );
>>>>
>>>> function mytime( ) {
>>>>       $time = microtime( );
>>>>       $time = explode( " ", $time );
>>>>       $time = $time[1] + $time[0];
>>>>       return $time;
>>>> }
>>>>
>>>> $time1 = mytime( );
>>>> $foo->techo( );
>>>> $time2 = mytime( );
>>>> $totaltime = ($time2 - $time1);
>>>> echo '<br /><br />techo() --> ', $totaltime, '<br /><br /><br />';
>>>>
>>>> $time1 = mytime( );
>>>> $foo->techo2( );
>>>> $time2 = mytime( );
>>>> $totaltime = ($time2 - $time1);
>>>> echo '<br /><br />techo2() --> ', $totaltime, '<br /><br /><br />';
>>>>
>>>> $time1 = mytime( );
>>>> $foo->techo3( );
>>>> $time2 = mytime( );
>>>> $totaltime = ($time2 - $time1);
>>>> echo '<br /><br />techo2() --> ', $totaltime, '<br /><br /><br />';
>>>> ?>
>>>>
>>>> I believe yes
>>>>
>>>> On Sun, Aug 31, 2008 at 5:37 PM, Robert Cummings <robert@xxxxxxxxxxxxx>
>>>> wrote:
>>>>>
>>>>> On Sun, 2008-08-31 at 17:09 +0200, Jochem Maas wrote:
>>>>>>
>>>>>> Diogo Neves schreef:
>>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> Why a static var don't cast as a dynamic one?
>>>>>>> See file for more info...
>>>>>>
>>>>>> attachments get stripped.
>>>>>> don't cross post to internals, it's bad form.
>>>>>> try and formulate your questions a bit better
>>>>>> (it should take you more time to write your post than
>>>>>> it takes for someone else to figure out what your going on about.).
>>>
>>>>> Correction, text attachments don't get stripped.
>>>
>>> give a man fish. Diogo already succeeded in sending a text attachment
>>> in a previous post ... I figured I let him work it out for himself ;-)
>>>
>>> .... you pedantic **** :-D
>>>
>>>>> Cheers,
>>>>> Rob.
>>>>> --
>>>>> http://www.interjinn.com
>>>>> Application and Templating Framework for PHP
>>>>>
>>>>>
>>>
>>
>>
>>
>
>



-- 
Thanks for your attention,

Diogo Neves
Web Developer @ SAPO.pt by PrimeIT.pt

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux