php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Thema bewerten
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 21-08-2010, 12:46
Version2
 Registrierter Benutzer
Links : Onlinestatus : Version2 ist offline
Registriert seit: Aug 2010
Beiträge: 7
Version2 befindet sich auf einem aufstrebenden Ast
Standard $_GET[] einer Eigenschaft zuweisen

Hallo,
ist es nicht möglich einer Eigenschaft einer Klasse einen Wert aus $_GET zu zuweisen?
Der Code ist ziemlich sinnlos, da ich nur etwas probieren will.
Code:
<?php
class hallo
{
  private $text = $_GET['hallo'];
  public function sagHallo()
  { 
    return 'Hallo' . $this->text;
  }
}

$hallo = new hallo;

echo $hallo->sagHallo();

?>
Ich bekommen immer einen fatal error.

Noch eine andere Frage, was bedeutet "gegen das Interface programmieren"?

danke schonmal
Mit Zitat antworten
  #2 (permalink)  
Alt 21-08-2010, 12:52
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

Zitat:
Zitat von Version2 Beitrag anzeigen
ist es nicht möglich einer Eigenschaft einer Klasse einen Wert aus $_GET zu zuweisen?
Doch, aber im Konstruktor oder innerhalb von Methoden, nicht bei der Initialisierung, vgl. PHP: Eigenschaften - Manual

Zitat:
Zitat von Version2 Beitrag anzeigen
Noch eine andere Frage, was bedeutet "gegen das Interface programmieren"?
Gegen Schnittstellen (Interfaces) Programmieren  Guggat emol Blog

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 21-08-2010, 14:20
Version2
 Registrierter Benutzer
Links : Onlinestatus : Version2 ist offline
Registriert seit: Aug 2010
Beiträge: 7
Version2 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Danke für die Links. Diese Beschreibung hatte ich auch bei Google gefunden, kann leider nicht wirklich etwas damit anfangen.
Hat jemand vielleicht ein konkretes Beispiel, also auch mit Code und so?
Mit Zitat antworten
  #4 (permalink)  
Alt 21-08-2010, 14:56
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Was willst du jetzt genau wissen? Was Interfaces überhaupt sind oder wie man gegen sie programmiert? Hast du schon mal etwas über OOP gelesen? Wenn nicht, solltest du erstmal damit anfangen.

Man programmiert gegen ein Interface, wenn man in seiner Klasse keine anderen Klassen kennen muss und sie somit zur Laufzeit beliebig austauschbar sind. Da man trotzdem wissen muss, mit wem man es zu tun hat und ob der die Methode die man gerade anwenden will auch unterstützt, arbeitet man gegen ein Interface (d. h. man verlässt sich auf dessen deklarierte Methoden und ruft diese auf) und kann damit alle Klassen behandeln, die dieses Interface implementieren. Eine Kontrolle ob das der Fall ist, kann man mit instanceof oder Type Hinting durchführen.

Reicht das?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 21-08-2010, 17:04
Version2
 Registrierter Benutzer
Links : Onlinestatus : Version2 ist offline
Registriert seit: Aug 2010
Beiträge: 7
Version2 befindet sich auf einem aufstrebenden Ast
Standard



ich glaube das hat mir weiter geholfen! Also so etwas in der Art:
PHP-Code:
<?php
interface BenutzerAnzahl
{
  public static function 
anzahl();
}

class 
AngabeBenutzerAnzahl implements BenutzerAnzahl
{
  private static 
$benutzer '25';
  public static function 
anzahl()
  {
    return 
self::$benutzer;
  }
}

class 
AusgabeBenutzerAnzahl
{
  private 
$objekt;
  public function 
ausgabe()
  {
    
$this->objekt = new AngabeBenutzerAnzahl;
    if (
$this->objekt instanceof BenutzerAnzahl)
    {
      echo 
$this->objekt->anzahl();
    }
  }
}

$a = new AusgabeBenutzerAnzahl;
$a->ausgabe();
?>
Und da kommt bei mir grad die nächste Frage auf:
Wie kann ich feststellen, ob eine Klasse eine bestimmt Schnittstelle implementiert ohne eine Objekt diese Klasse zu erzeugen?
Ich habe es mal so probiert, funktioniert aber anscheinend nicht^^
PHP-Code:
if (AngabeBenutzerAnzahl instanceof BenutzerAnzahl)
    {
      echo 
AngabeBenutzerAnzahl::anzahl();
    }else{
      echo 
'tschüss'
Mit Zitat antworten
  #6 (permalink)  
Alt 21-08-2010, 17:17
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Version2 Beitrag anzeigen
Und da kommt bei mir grad die nächste Frage auf:
Wie kann ich feststellen, ob eine Klasse eine bestimmt Schnittstelle implementiert ohne eine Objekt diese Klasse zu erzeugen?
Warum willst du das?
Mit Zitat antworten
  #7 (permalink)  
Alt 21-08-2010, 17:58
Version2
 Registrierter Benutzer
Links : Onlinestatus : Version2 ist offline
Registriert seit: Aug 2010
Beiträge: 7
Version2 befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich eine statische Funktion nutzen will, muss ich ja kein Objekt erzeugen, deswegen.
Mit Zitat antworten
  #8 (permalink)  
Alt 21-08-2010, 18:47
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Du kannst in einem Interface keine statischen Methoden vorschreiben, also macht ein Interface bei einer statischen Klasse wenig Sinn. Statische Klassen sind generell nur sehr sparsam einzusetzen. Wenn möglich, darauf verzichten.

Geändert von h3ll (21-08-2010 um 18:50 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 21-08-2010, 20:39
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie Amica schon schrieb kannst du einen GET Parameter nicht bei der Eigenschafteninitialisierung zuweisen. Wenn du der Meinung bist die Klasse, bzw. viele abarbeitende Methoden hängen von diesem GET Parameter ab dann übergibst du das ganz einfach dem Konstruktor.

Kleines Beispiel.

PHP-Code:
class MyClass{

    protected 
$_getParam;

    public function 
__construct($_getParam){
        
        
$this->_getParam $_getParam;
    }

    
//weitere methoden in denen du auf $this->_getParam zugreifen kannst 
}

//aufruf der klasse
$_instanceMyClass = new MyClass($_GET['getParam']); 
Das ist eigentlich das was du wolltest. In dem Fall gegen ein Interface programmieren kann man geteilter Meinung sein, dass würde meiner Meinung nach erst dann Sinn machen wenn mehrere Klassen mit diesem GET Paramter arbeiten müssen, aber auch dann würde ich eher eine abstrakte Klasse schreiben die den GET Parameter speichert. Obwohl das auch wieder einen kleinen haken hat, eine abstracte Klassen kann man nur via Vererbung einsetzen bzw. nutzen weil man davon ja keine Instanz bilden kann. Und da man in PHP keine Mehrfachvererbung umsetzen kann, kann dies dann auch wieder im weiteren System Probleme aufwerfen.

In dem Fall sehe ich momentan den Mehrwert den ein Interface bringen soll allerdings nicht. Kann aber auch daran liegen das ich selber sowas selten bis gar nicht einsetze und mir da ein wenig die Erfahrung dait fehlt.

Sollte ich mit meinen Aussagen falsch liegen, dann bitte korrigiert mich.

Jedoch das was du mit deinen Statischen Sachen machen willst ist mir vollkommen unklar udn dazu noch Sinnfrei.

Gruß litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
Mit Zitat antworten
  #10 (permalink)  
Alt 21-08-2010, 21:10
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Man kann natürlich alles auf die Spitze treiben. Wenn man es ganz genau nimmt, müsste man aus Allem Ojekte machen (wie es zB. bei Java ist). Aber das ist bei PHP eher nicht ratsam.

Man kann für jede Klasse ein Interface machen. Aber das ist auch nicht wirklich empfehlenswert.

Meine persönliche goldene Regel: Ich mache dort ein Interface, wo es für eine Aufgabe verschiedene Klassen gibt, oder wenn welche für die Zukunft vorgesehen sind. Also angenommen man integriert ein Bezahlsystem, dann macht es Sinn dafür ein Interface anzulegen, damit mehrere verschiedene Bezahlsysteme (Paypal, Authorize.NET, Qenta, etc.) über die selben Methoden angesprochen werden können.

Auch kann man "Eigenschaften" als Interface darstellen. Abstraktes Beispiel:
PHP-Code:
interface BuyableInterface {}

class 
Person {
    public 
$firstname;
    public 
$lastname;
}

class 
Car implements BuyableInterface {
    public 
$brand;
    public 
$name;
}

class 
ShoppingCart {
    protected 
$_cart = array();

    public function 
addToCart(BuyableInterface $article) {
        
$this->_cart[] = $article;
    }
}

$person = new Person();
$person->firstname 'Max';
$person->lastname 'Mustermann';

$car = new Car();
$car->brand 'Porsche';
$car->name '911';

$shoppingCart = new ShoppingCart();
$shoppingCart->add($car);
$shoppingCart->add($person); // geht nicht, wirft Fehler 

Geändert von h3ll (21-08-2010 um 21:17 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 21-08-2010, 21:42
Version2
 Registrierter Benutzer
Links : Onlinestatus : Version2 ist offline
Registriert seit: Aug 2010
Beiträge: 7
Version2 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Antworten, ich denke, dass ich es jetzt besser verstehe.

@litter: Ich will noch gar nichts machen, ich probiere nur das ganze etwas zu verstehen. Und will halt wissen was geht und was nicht. Ich habe bis jetzt nur Tutorials gelesen und noch nicht selber programmiert und damit will ich jetzt langsam anfangen
Mit Zitat antworten
  #12 (permalink)  
Alt 21-08-2010, 22:31
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
gegen ein Interface programmieren
Um die Verwirrung komplett zu machen:
Damit ist nicht gemeint, dass man unbedingt mit dem PHP Schlüsselwort "Interface" ein solches deklarieren muss oder sollte. Auch eine abstrakte Basisklasse kann dieser "Ideologie" entsprechen.
__________________
Wir werden alle sterben
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/100126-_get-einer-eigenschaft-zuweisen.html
Erstellt von For Type Datum
Gegen Schnittstellen (Interfaces) Programmieren &#160; Guggat emol Blog This thread Refback 31-08-2013 17:59

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eigenschaft ändern in einer Klasse browerman PHP Developer Forum 3 03-03-2008 08:22
Globale Variable als Wert der Eigenschaft einer Klasse übernehmen hasch PHP Developer Forum 13 29-07-2006 14:21
kennt einer diese CSS Eigenschaft #[::color004]; mcmurphy HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 3 06-06-2006 19:50
Auslesen einer Style-Eigenschaft mittels PHP manuelme1 PHP Developer Forum 7 05-07-2005 13:58
Inhalt einer TXT-Datei einer Variable zuweisen andik2000 PHP Developer Forum 1 18-06-2002 12:48

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:41 Uhr.