Ankündigung

Einklappen
Keine Ankündigung bisher.

Konstruktor weißt Eigenschaft keinen Wert zu

Einklappen

Neue Werbung 2019

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

  • #16
    Ja, hab ich übersehen -> siehe Edit in meinem Post über Dir!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #17
      Zitat von Arne Drews Beitrag anzeigen
      Ja, hab ich übersehen -> siehe Edit in meinem Post über Dir!
      Gibt es andere Wege, womit ich eine Connection aufbauen kann, und die dann auch verwenden kann (in den Model-Klassen bspw. testModel)?

      MfG.
      Dir gefällt mein Beitrag, ich habe Dir geholfen?
      Bewerte mich doch einfach!

      Kommentar


      • #18
        Adhoc würden mir drei Möglichkeiten einfallen:

        1. In testModel ein Objekt vom parent (Model) erzeugen

        2. testModel eine Instanz von Model übergeben

        3. Model statisch machen

        Alle haben Vor- und Nachteile. Aber wenn Du die Instanz benötigst, wirst Du Dich für eine der drei entscheiden müssen...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #19
          Ich sehe da noch
          4. $extObj = new testModel($database->DatabaseConnect());

          Wenn die Klassenerweiterung keinen eigenen Konstruktor hat, übernimmt das der Konstruktor der geerbten Klasse.

          Kommentar


          • #20
            Joa... hast schon recht, aber das Szenario sähe ich in 1. implementiert...
            Aber gut, kann man erwähnen...
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #21
              <klugschei.. on>
              Mit 4. existiert nur eine Instanz von testModel und auch intern kein "Objekt vom parent (Model) "
              <klugschei.. off>

              Erzeugt er im testModel ein Objekt vom parent (Model), hat er Zugriff auf die Methoden von Model und
              'extends Model' ist dann mehr als überflüssig. So sehe ich das jedenfalls.

              Kommentar


              • #22
                Das stimmt allerdings, dafür kriegst Du ein Bienchen...
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #23
                  Zitat von Arne Drews Beitrag anzeigen
                  Adhoc würden mir drei Möglichkeiten einfallen:
                  1. In testModel ein Objekt vom parent (Model) erzeugen
                  Cool, hat mir echt weiter geholfen! Wenn ich nun var_dump() auf getConnection() in der testModel Klasse mache, bekomme ich die Werte.

                  Anderes Problem, wenn ich $this->getConnection()->query("SELECT xxx"); mache, bekomme ich halt folgenden Error:

                  Fatal error: Call to undefined method Model::query() in /Applications/XAMPP/xamppfiles/htdocs/sc/models/testModel.php on line 22
                  Obwohl getConnection() nur einen return von der Eigenschaft _connection macht. Sollte doch eig. funktionieren. Oo

                  MfG.
                  Dir gefällt mein Beitrag, ich habe Dir geholfen?
                  Bewerte mich doch einfach!

                  Kommentar


                  • #24
                    Cool, hat mir echt weiter geholfen!
                    Die bessere Variante hat jspit allerdings angegeben!

                    Obwohl getConnection() nur einen return von der Eigenschaft _connection macht. Sollte doch eig. funktionieren. Oo
                    Sofern die Methode query() im entsprechenden Objekt existiert, ja.
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #25
                      Zitat von Arne Drews Beitrag anzeigen
                      Die bessere Variante hat jspit allerdings angegeben!

                      Sofern die Methode query() im entsprechenden Objekt existiert, ja.
                      Komisch. Im Konstruktor wird allerdings die Connection gesetzt => new Model($database->DatabaseConnect());
                      Und eig. im getConnection() nur die Connection (Eigenschaft _connection) zurück gegeben.

                      Wieso wird query() als Methode von Model angesehen?
                      PHP-Code:
                      class testModel extends Model {
                          
                          public function 
                      __construct($connection) {
                              
                      parent::__construct($connection);
                          }
                          
                          public function 
                      test() {
                              
                      $test $this->getConnection()->query("SELECT * FROM users");
                              
                      //echo $test->num_rows;
                              //var_dump($this->getConnection());
                          
                      }

                      Die Variante von JSPIT ist bei mir total überflüssig. Da ich die Models in die Controllers laden muss, und ich nicht extra für den Controller eine Connection aufbauen möchte. Dafür habe ich die Models da.

                      Aber danke für eure Hilfe!
                      MfG.
                      Dir gefällt mein Beitrag, ich habe Dir geholfen?
                      Bewerte mich doch einfach!

                      Kommentar


                      • #26
                        PHP-Code:
                        abstract class Model {
                            
                            private 
                        $_connection;
                            private 
                        $_controller;
                            
                            public function 
                        __construct(Controller $controllermysqli $connection) {
                                
                        $this->_connection $connection;
                                
                        $this->_controller $controller;
                            }
                            
                            public function 
                        getController() {
                                return 
                        $this->_controller;
                            }
                            
                            public function 
                        getConnection() {
                                return 
                        $this->_connection;
                            }
                        }  

                        class 
                        TestModel extends Model{

                        public function 
                        test(){
                        $result $this->getConnection()->query('SELECT * FROM users');
                        }


                        PHP-Code:
                        require 'config.php';
                        require 
                        'sc/lib/Bootstrap.php';
                        require 
                        'sc/lib/Controller.php';
                        require 
                        'sc/lib/View.php';
                        require 
                        'sc/lib/Model.php';

                        $connection = new MySQLi("localhost""root""***""**") or die($connection->error);
                        $connection->set_charset('utf-8');
                        $controller = new Controller($connection);
                        $model = new TestModel($controller$connection);  
                        $model->test(); 
                        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

                        Lädt...
                        X