<?php
class Pet
{
public $name;
public function __construct ( $name )
{
$this->name = $name;
}
public function speak ($what)
{
return $what;
}
}
class Dog extends Pet
{
// Le he metido el null para que el parametro sea opcional
public function speak ( $what )
{
return $what ? parent::speak($what) : 'Woof Woof!';
/*
// Otra alternativa para meter codigo mas complicado seria:
if($what)
return parent::speak($what);
return 'Woof Woof';
*/
}
public function plays()
{
return 'fetch';
}
}
$charlie = new Dog ( 'Charlie' );
echo 'The dog\'s name is ' . $charlie->name . PHP_EOL;
echo 'Speak of the super class: ' . $charlie->speak('hello, my name is ' . $charlie->name) . PHP_EOL;
echo 'Speak of the dog class: ' . $charlie->speak() . PHP_EOL;
The dog's name is Charlie
Speak of the super class: hello, my name is Charlie
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Dog::speak(), 0 passed in /in/hT55g on line 47 and exactly 1 expected in /in/hT55g:23
Stack trace:
#0 /in/hT55g(47): Dog->speak()
#1 {main}
thrown in /in/hT55g on line 23
Process exited with code 255.
The dog's name is Charlie
Speak of the super class: hello, my name is Charlie
Warning: Missing argument 1 for Dog::speak(), called in /in/hT55g on line 47 and defined in /in/hT55g on line 23
Notice: Undefined variable: what in /in/hT55g on line 25
Speak of the dog class: Woof Woof!
Output for 5.2.3 - 5.2.17
The dog's name is Charlie
Speak of the super class: hello, my name is Charlie
Warning: Missing argument 1 for Dog::speak(), called in /in/hT55g on line 47 and defined in /in/hT55g on line 23
Speak of the dog class: Woof Woof!
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.2
The dog's name is Charlie
Speak of the super class: hello, my name is Charlie
<br />
<b>Warning</b>: Missing argument 1 for Dog::speak(), called in /in/hT55g on line 47 and defined in <b>/in/hT55g</b> on line <b>23</b><br />
Speak of the dog class: Woof Woof!
Output for 5.0.2 - 5.0.5
The dog's name is Charlie
Speak of the super class: hello, my name is Charlie
<br />
<b>Warning</b>: Missing argument 1 for Dog::speak() in <b>/in/hT55g</b> on line <b>23</b><br />
Speak of the dog class: Woof Woof!
Output for 5.0.0 - 5.0.1
The dog's name is CharliePHP_EOLSpeak of the super class: hello, my name is CharliePHP_EOL<br />
<b>Warning</b>: Missing argument 1 for Dog::speak() in <b>/in/hT55g</b> on line <b>23</b><br />
Speak of the dog class: Woof Woof!PHP_EOL
Output for 4.4.2 - 4.4.9
<br />
<b>Parse error</b>: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/in/hT55g</b> on line <b>5</b><br />
Process exited with code 255.
<br />
<b>Parse error</b>: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/in/hT55g</b> on line <b>5</b><br />
Process exited with code 255.
Output for 4.3.2 - 4.3.4
<br />
<b>Parse error</b>: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in <b>/in/hT55g</b> on line <b>5</b><br />
Process exited with code 255.