php .com
Regarding earlier note by @purkrt :
> I would like to stress out that the opening tag is "<?php[whitespace]", not just "<?php"
This is absolutely correct, but the wording may confuse some developers less familiar with the extent of the term "[whitespace]".
Whitespace, in this context, would be any character that generated vertical or horizontal space, including tabs ( \t ), newlines ( \n ), and carriage returns ( \r ), as well as a space character ( \s ). So reusing purkrt's example:
<?php/*blah*/ echo "a"?>
would not work, as mentioned, but :
<?php /*php followed by space*/ echo "a"?>
will work, as well as :
<?php
/*php followed by end-of-line*/ echo "a"?>
and :
<?php /*php followed by tab*/ echo "a"?>
I just wanted to clarify this to prevent anyone from misreading purkrt's note to mean that a the opening tag --even when being on its own line--required a space ( \s ) character. The following would work but is not at all necessary or how the earlier comment should be interpreted :
<?php
/*php followed by a space and end-of-line*/ echo "a"?>
The end-of-line character is whitespace, so it is all that you would need.
<?php
/**
* Define MyClass
*/
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
/**
* Define MyClass2
*/
class MyClass2 extends MyClass
{
// We can redeclare the public and protected properties, but not private
public $public = 'Public2';
protected $protected = 'Protected2';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}
$obj2 = new MyClass2();
echo $obj2->public; // Works
echo $obj2->protected; // Fatal Error
echo $obj2->private; // Undefined
$obj2->printHello(); // Shows Public2, Protected2, Undefined
?>