Understanding Static Methods

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

 



Hi all,

I'm trying to understand static methods in a test class. Reading the
manual, it says: "A member or method declared with static can not be
accessed with a variable that is an instance of the object and cannot
be re-defined in an extending class."

Test code:
========

<?php

class B
{
	private $str;
	
	public final function __construct()
	{
		$this->str = 'Hello world';
	}
	
	public function showB()
	{
		echo $this->str, '<br>';
		echo 'Showing B<br>';
		$this->TestStatic();
	}

	
	public static function TestStatic()
	{
		echo '<br>Inside Static<br>';
	}
}

echo error_reporting() . '<br>';

$test = new B;
$test->TestStatic();
$test->showB();
echo "-- END --";
?>

Output:
=====

4095

Inside Static            --> Called by $test->TestStatic()
Hello world
Showing B

Inside Static            --> Called from $test->showB with $this->TestStatic()
-- END --

Comments:
========

I'm running PHP 5.0.2 and error_reporting = E_ALL | E_STRICT. As
reported in the output, the values for error_reporting are well set
(4095 == E_ALL | E_STRICT)

I cannot understand why I can access the method TestStatic() with a
variable that is an instance of the class. The manual say I cannot do
it. As you can see, I call the static method with $this->TestStatic()
inside the showB() method; also, I can access it by using the instance
of this class: test->TestStatic().

I get no errors or notices about I'm accessing an static method by
using and instance var. As you can read in the manual, you cannot do
that .... but it works without error.

I'm sure I'm missing something ...

Thanks in advance for comments,
Jordi.

-- 
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