Ankündigung

Einklappen
Keine Ankündigung bisher.

OOP Klassen Methoden verwenden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • OOP Klassen Methoden verwenden

    Hey Community,
    ich und ein Freund rätsel schon die ganze Zeit. Ich habe schnell eine DB Connect Klasse geschrieben:
    PHP-Code:
    <?php
    class Database {
        protected 
    $db_host "localhost";
        protected 
    $db_user "root";
        protected 
    $db_pass "epasd.....";
        protected 
    $db_name "test";

        public function 
    connect() {
            
    $mysqli = new mysqli($this->db_host$this->db_user$this->db_pass$this->db_name);
            if(!
    $mysqli->connect_error) {
                echo 
    'Prüfe deine MySQL Daten!';
                exit();
            }
            return 
    true;
        }
    }
    ?>
    So, jetzt haben wir eine Test Klasse erstellt die sieht so aus:
    PHP-Code:
    <?php
    require_once 'db.class.php';
    $db = new Database;
    $db->connect();
    class 
    test {
     public 
    $mysqli;


     public function 
    __construct() {
      
    $this->mysqli $mysqli;
     }
     public function 
    da(){
     
    $sql 'SELECT title FROM tabs';
     
    $query $mysqli->prepare($sql);
     
    $query->execute();
     
    $query->bind_result($title);
     while (
    $query->fetch()) {
     echo 
    $title."<br>";
      }

     }
    }
    ?>
    Die Abfrage funktioniert aber nicht, wieso? Habe ich eventuell. was übersehen?

    Mit freundlichen Grüßen,
    Shelline

  • #2
    der code ist von vorne bis hinten murks.
    lerne Grundlagen
    liebe Grüße
    Fräulein Dingsda

    Kommentar


    • #3
      Zitat von dingsda Beitrag anzeigen
      der code ist von vorne bis hinten murks.
      lerne Grundlagen
      Welcher Code denn?

      Kommentar


      • #4
        Zitat von Shelline Beitrag anzeigen
        Welcher Code denn?
        beide natürlich.

        entschuldige, dass ich es nicht weiter ausführe. aber ich wüsste absolut nicht wo ich anfangen soll.
        ihr habt halt wirklich null verstanden, wie klassen und methoden funktionieren. z.b. was die sichtbarkeit von variablen angeht.
        liebe Grüße
        Fräulein Dingsda

        Kommentar


        • #5
          Zitat von dingsda Beitrag anzeigen
          beide natürlich.

          entschuldige, dass ich es nicht weiter ausführe. aber ich wüsste absolut nicht wo ich anfangen soll.
          ihr habt halt wirklich null verstanden, wie klassen und methoden funktionieren. z.b. was die sichtbarkeit von variablen angeht.
          PHP-Code:
          <?php
          class Database {
              public 
          $db_host "localhost";
              public 
          $db_user "root";
              public 
          $db_pass "eclipse";
              public 
          $db_name "test";
              public 
          $con;

              public function 
          __construct($db_host,$db_user,$db_pass,$db_name) {
                  
          $this->con = new mysqli($this->db_host$this->db_user$this->db_pass$this->db_name);
                  return 
          true;
              }
          }
          ?>
          Wäre dass für Sie akzeptable?

          Kommentar


          • #6
            Immernoch nicht.
            Was soll das Thema in "PHP-Fortgeschrittene"?
            [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

            Kommentar


            • #7
              was hällst du vom folgendem konstrukt?

              PHP-Code:
              class UserRepository{
              private 
              $db;
              public function 
              __construct(PDO $db){
              $this->db $db;
              }

              public function 
              findById($id){
              $sql "SELECT username,whatever FROM users WHERE id = :id";
              $statment $this->db->prepare($sql);
              $statment->execute(array(':id'=>$id));
              $row $statement->fetch(PDO::FETCH_OBJ);

              return 
              $this->rowToEntity($row);

              }
              private function 
              rowToEntity(stdClass $row){
              $user = new User($row->id);
              $user->setUsername($row->username);
              return 
              $user;
              }
              }

              //benutzung
              //irgendwo in einer bootstrap.php 
              $pdo = new PDO($dsn,$username,$password);
              return array(
              'db' => $pdo
              );
              //irgendwo in deiner users.php
              $vars = require 'bootstrap.php';
              $userRepository = new UserRepository($vars['db']);
              $user $userRepository->findById(1);
              var_dump($user); //kriegst ein objekt 
              Deine aktuelle Fehler sind folgende:

              1) Versuchst du eine Datenbank klasse zu erstellen, die nichts nützt
              2) danach erstellest du eine neue instanz der klasse während der definition(ist sogar schlimmer als ableitung)


              Im grunde willste doch nur eine instanz von mysqli und diese dann an gewissen stellen verfügbar machen, richtig? dann erstelle dir eine datei in der du einfach eine instanz anlegst und ablieferst, und alle klassen, die diese instanz brauchen, erhalten die über den konstruktor
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Zitat von BlackScorp Beitrag anzeigen
                Im grunde willste doch nur eine instanz von mysqli und diese dann an gewissen stellen verfügbar machen, richtig?
                Wenn ich das richtig sehe, möchte er das mysli-Objekt in ein Klasse für den DB-Zugriff kapseln um z.B. Exceptionhandling zu implementieren.
                Was ich bei deinem Beispiel irgendwie nicht sehe.

                Kommentar


                • #9
                  Zitat von hts Beitrag anzeigen
                  Wenn ich das richtig sehe, möchte er das mysli-Objekt in ein Klasse für den DB-Zugriff kapseln um z.B. Exceptionhandling zu implementieren.
                  Was ich bei deinem Beispiel irgendwie nicht sehe.
                  Hatte ich vor, aber durch dass ganze gehate hier komme ich selbst kaum klar. Und habe dieses Projekt einfach beendet. Ich frag mich schon seit geraumer Zeit wieso Anfänger hier komplett runter gemacht werden.

                  Wieso dieser Thread im PHP Fortgeschrittenen Bereich ist? Ich hab einfach nicht aufgepasst, weil ich eine Lösung finden wollte. Thread kann gerne geschlossen werden, da es auch keinem Anfänger weiter helfen wird.

                  Mit freundlichen Grüßen,
                  Shelline

                  Kommentar


                  • #10
                    Zitat von Shelline Beitrag anzeigen
                    aber durch dass ganze gehate hier komme ich selbst kaum klar. Und habe dieses Projekt einfach beendet. Ich frag mich schon seit geraumer Zeit wieso Anfänger hier komplett runter gemacht werden.
                    verdammt.
                    jetzt hab ich echt ein schlechtes gewissen
                    liebe Grüße
                    Fräulein Dingsda

                    Kommentar


                    • #11
                      Zitat von dingsda Beitrag anzeigen
                      verdammt.
                      jetzt hab ich echt ein schlechtes gewissen
                      Ich spüre die Ironie, die aus Dir kommt.

                      Kommentar


                      • #12
                        Zitat von Shelline Beitrag anzeigen
                        Hatte ich vor, aber durch dass ganze gehate hier komme ich selbst kaum klar. Und habe dieses Projekt einfach beendet.
                        eine sehr schöne Motivation hier den Anfängern weiter zu helfen.

                        Was meinst du wie oft ich schon hier komische dinge von nikosch und den Rest gehört habe. Wenn du sofort aufgibst und schmollst, bist du nicht lernfähig, wenn du es akzeptierst und versuchst aus einigen antworten wenigstens was als nützlich anzusehen, entwickelst du dich weiter.

                        Ja wir trollen hier, aber das kannst du mal als eine Art "natürliche Auslese" ansehen

                        Ich habe dir einen vorschlag gepostet, schau es doch wenigstens an.
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                        Kommentar


                        • #13
                          gehate
                          Nu bleib mal aufm Teppich. Wenn Du nicht kritikfähig bist, dann such Dir besser nen Privatlehrer.
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Nur mal zur Erinnerung Deine Aussage von gestern.
                            ich habe endlich nun mit OOP abgeschlossen, und wollte mich jetzt an einer Content Management System wagen.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              shelline was mir noch aufgefallen ist: ein Konstruktor gibt keinen return value zurück!

                              Kommentar

                              Lädt...
                              X