結論から言うと、関数の場合はエラーで定義できず、メソッドの場合は定義できます。
組み込み関数の htmlspecialchars
を再定義して確かめます。
関数
<?php
function htmlspecialchars($args) {
return $args;
}
$a = '<a href="https://www.yahoo.co.jp/">zozo</a>';
echo htmlspecialchars($a);
結果
Fatal error: Cannot redeclare htmlspecialchars() in /in/r0jYu on line 3
Process exited with code 255.
再宣言できないとエラーが表示されます。
実行結果:Online PHP editor
インスタンスメソッド
<?php
class A
{
public function htmlspecialchars($args)
{
return 'instance method :' . $args;
}
}
$a = '<a href="https://www.yahoo.co.jp/">zozo</a>';
$b = new A;
echo $b->htmlspecialchars($a);
結果
instance method :<a href="https://www.yahoo.co.jp/">zozo</a>
エラーは表示されません。
実行結果:Online PHP editor
静的メソッド
<?php
class A
{
public static function htmlspecialchars($args)
{
return 'static method :' . $args;
}
}
$a = '<a href="https://www.yahoo.co.jp/">zozo</a>';
$b = new A;
echo $b->htmlspecialchars($a);
結果
static method :<a href="https://www.yahoo.co.jp/">zozo</a>
エラーは表示されません。
実行結果:Online PHP editor
インスタンスメソッド・静的メソッドの再定義
<?php
class A
{
public function htmlspecialchars($args)
{
return 'instance method :' . $args;
}
public static function htmlspecialchars($args)
{
return 'static method :' . $args;
}
}
$a = '<a href="https://www.yahoo.co.jp/">zozo</a>';
$b = new A;
echo $b->htmlspecialchars($a);
echo $b::htmlspecialchars($a);
結果
Fatal error: Cannot redeclare A::htmlspecialchars() in /in/QGdT4 on line 9
Process exited with code 255.
インスタンスメソッド・静的メソッド関係なく、一度定義したインスタンスメソッド・静的メソッドと同名のメソッドを再定義するとエラーが表示されます。
実行結果:Online PHP editor