Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PHP5] Type Hinting und Methodenüberladung

Empfohlene Antworten

Veröffentlicht

Seit PHP5 gibt es ja Methodenüberladung und Type Hinting. Entweder stehe ich auf dem Schlauch, oder ich muss mir was anderes einfallen lassen.

Mein Ansatz:


class Foo {
public function bar(SomeClass $c) {}
public function bar(AnotherBar $c) {}
}
[/PHP]

Ich werde freundlich darauf hingewiesen, dass ich die Methode bar() nicht erneut definieren kann. Also scheint das Type Hinting sowas wie Auto Boxing zu sein.

Hat jemand eine Idee, wie ich das gewünschte realisieren kann?

Seit PHP5 gibt es ja Methodenüberladung und Type Hinting.

It's not, however, possible to overload methods as in Java/C++/C# etc. There is a magic method called in PHP 5, __call(), which provides a workaround.

http://www.phpbuilder.com/board/showthread.php?s=&postid=10559744&highlight=overload%2A#post10559744

bzw. hier was zum overloading in php:

http://www.phpbuilder.com/board/showthread.php?s=&threadid=10278930&highlight=overloading

Also mir fällt da eigentlich nur folgendes ein:

func_num_args() und func_get_args()

müsstest halt eine funktion foo machen die an erster Position in der übergabe SomeClass hat und in der zweiten dann AnotherClass

Mit dieser Lösung bin wieder da, wo ich mit PHP4 auch hin kam.

PHP hat nunmal keine festen Varialbentypen.


$a = "5";
echo $a;
$a = 5;
echo $a;
[/php]

gibt keinerlei Fehler, obwohl du zwei unterschiedlicheTypen ein und derselben Variable zuweisst (und im zweiten Fall sogar eine Typumwandlung bei der Ausgabe indirekt vornimmst).

Wie könnte es also gehen, dass 2 Methoden sich nur durch unterschiedliche Variablentypen unterscheiden? Ich denke auch nicht, dass das bei PHP jemals kommen wird (auch wenn ich ansich nichts gegen feste Variablentypen hätte).

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.