Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasse in Klasse abrufen

Einklappen

Neue Werbung 2019

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

  • Klasse in Klasse abrufen

    Hallo ^^

    also ich habe hier ein Kleines Problem und bin deshalb schon verwirrt..

    und zwar will ich eine Klasse, welche ein Construct beinhaltet (sofern wichtige info ^^).

    Diese Klasse will ich nun in einer anderen Klasse abfragen.

    Dies ist grad ein wenig schwer zu erklären, weshalb ich das mit Codes versuche zu erklären.. ^^

    suche.php (code ist nur testweiße und noch nicht wirklich fertig ^^)
    PHP-Code:
    <?php
        
    class search{
            
            function 
    category($table, array $column$search$titel){
                include(
    "_includes/settings.php");
                
                
    $find "";
                
    $found "";
                
    $kategorie '<div class="main_eintrag">';
                
                
    $query "
                    SELECT *
                    FROM "
    .$table."
                    WHERE 
    $column[0] LIKE '%$search%' || $column[1] LIKE '%$search%'
                    ORDER BY 
    $column[0] ASC, $column[1] ASC
                "
    ;
                    
                
    $counted count($sql->counts($query));
                
                
    $res $sql->query($query."LIMIT ".$set["start_limit"]);
                while(
    $row $sql->row_array($res)){
                    
                    
    $title $row[$column[0]];
                    
    $subtitle $row[$column[1]];
                    
                    if(
    strlen($title) > $set["titlelenght"]){$title substr($title0$set["titlelenght"]).'...';}
                    if(
    strlen($subtitle) > $set["subtitlelenght"]){$subtitle substr($subtitle0$set["subtitlelenght"]).'...';}
                    
                    
    $kategorie .= '
                        <div id="box">
                            <img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/David_Guetta_at_2011_MMVA.jpg/250px-David_Guetta_at_2011_MMVA.jpg"></img>
                            <div class="main_eintrag_text">
                                <b>'
    .$title.'</b>
                                <p>Entwickler: '
    .$subtitle.'</p>
                            </div>
                            <div class="clear"></div>
                        </div>
                    '
    ;
                    
                    
    $found "aktiv";
                }    

                
    $kategorie .= '</div><br />';
                
                if(
    $counted $set["start_limit"]){
                
                    
    $more '
                        <div style="float:right;">
                            <a href="#more">Zeige mehr '
    .$titel.'</a>
                        </div>
                    '
    ;
                    
                } else {
    $more "";}
                
                if(!empty(
    $found)){
                
                    
    $find '
                        <div class="main_titel">
                            <h1>'
    .$titel.'</h1>
                            <small>'
    .$counted.'</small>
                        </div>
                        <div class="clear"></div>
                    '
    .$kategorie.$more;
                    
                }
                
                return 
    $find;
        
            }
            
        }
    ?>
    MySQL.php (diese Klasse brauche ich in der Suche.php)
    PHP-Code:
    <?php
    class MySQL {

        private 
    $host;
        private 
    $user;
        private 
    $password;
        private 
    $db;
        
        private 
    $dbObj;

        public function 
    __construct($dbData) {
        
            
    $this->host     $dbData['host'];
            
    $this->password $dbData['password'];
            
    $this->user     $dbData['user'];
            
    $this->db       $dbData['db'];

            
        }
        
    public function 
    connect() {

             
    $this->dbObj mysql_connect($this->host$this->user$this->password);
                  
            if(! 
    $this->dbObj) {
                  
                echo 
    "Verbindung nicht m&ouml;glich";
                    
            } else {
                  
                if(!
    mysql_select_db($this->db$this->dbObj)) {
                    
                    echo 
    "Verbindung nicht moeglich";
                      
                }
            }
            
        }
        
        
    //ein Einfacher Query
        
        
    public function query($query) {
        
            return 
    mysql_query($query);
            
        }
        
        public function 
    row_array($ressource) {
        
            return 
    mysql_fetch_array($ressource);
            
        }

      public function 
    counts($statement) {
      
          
    $query $this->query($statement);
          
    $arrayAusgabe = array();

          while(
    $row $this->row_array($query)) {
          
            
    $arrayAusgabe[] = $row;
            
          }

          return 
    $arrayAusgabe;
        }


    }


    ?>

    beide Dateien werden in der Base.php eingebunden.

    PHP-Code:
    <?php
        
    require "{$root}_includes/settings.php";
        require 
    "{$root}_includes/mysql.php";
        require 
    "{$root}_includes/search.php";
        
        
        
    $sql = new MySQL(
            array(
                
    'host' => $set["host"], 
                
    'user' => $set["user"], 
                
    'password' => $set["pw"], 
                
    'db' => $set["db"]
            )
        );
        
        
        
    $search = new search();
        
        
        
    $sql->connect();
        
    clean();
    ?>
    so ist zwar jetzt nicht die Perfekte Erklärung, aber hoffe das man es dennoch heraus lesen kann, was ich eigentlich will ^^

    Hier nochmal Kurzform:
    $sql = new MySQL() soll in der class search() auch aufgerufen werden können.

    Hoffe ihr könnt mir helfen.

  • #2
    ich hab nicht verstanden was das soll.
    wobei du selbstredent erstmal auf mysqli oder pdo umsteigen könntest.

    also du hast schwierigkeiten mit verebung und getungsbereich, denke ich:
    http://www.php.net/manual/de/languag...visibility.php
    http://www.php.net/manual/de/languag...nheritance.php
    und so weiter und so fort.

    Kommentar


    • #3
      Ich bitte um Hilfe, und keinen Ratschlag was ich ändern soll, bitte..
      Denn zu mysqli oder PDO will ich nicht gehen, bzw noch nicht. Dahin werde ich gehen, wenn MySQL auch wirklich gelöscht wurde, oder wenn ich mal denke das ich das jetzt Brauche. (dafür ist ja die MySQL Klasse)

      Aber da du nicht verstanden hast, was ich will hier nochmal

      also MySQL soll auch in der Seach() Klasse abgerufen werden können.
      mit Extends kann ich das nicht machen, bzw klappt nicht. entweder bin ich zu dumm oder kp.
      So ich könnte natürlich MySql wieder includen, was aber dann aber nicht mehr OOP wäre, und außerdem will MySQL nicht noch einmal Öffnen.

      Ich will in der Search Klasse die Funktionen von MySQL auch abrufen können.
      Entweder mit $sql->counts() oder $this->counts()

      nur wie mache ich das?

      Kommentar


      • #4
        Zitat von _freak_frozenx3 Beitrag anzeigen
        Ich bitte um Hilfe, und keinen Ratschlag was ich ändern soll, bitte..
        schön, dass du die links überlesen hast. //out

        Kommentar


        • #5
          Hab ich nicht, nur hab ich diese schon bevor ich hier geschrieben habe gelesen.
          Das ist der Grund wieso ich auch Hilfe brauche, weil es nicht so Klappt wie ich es brauche

          Kommentar


          • #6
            Zitat von _freak_frozenx3 Beitrag anzeigen
            Denn zu mysqli oder PDO will ich nicht gehen, bzw noch nicht. Dahin werde ich gehen, wenn MySQL auch wirklich gelöscht wurde, oder wenn ich mal denke das ich das jetzt Brauche. (dafür ist ja die MySQL Klasse)
            Jap, natürlich. Gibt es dafür irgendeinen Grund, abgesehen von Faulheit?
            Was du brauchst, nennt man Dependency Injection.
            Wenn du eine Instanz in einem Objekt brauchst, musst du diese Instanz an das Objekt übergeben.
            Zum Beispiel:
            PHP-Code:
            class Search {
                protected 
            $pdo;
                public function 
            __construct(PDO $pdo) {
                    
            $this->pdo $pdo;
                }
                public function 
            applesAndPears($apples$pears) {
                    return 
            $this->pdo->query("jo, ich hätte gerne $apples Äpfel und $pears Birnen.")->fetchAll();
                }
            }

            $pdo = new PDO();
            $search = new Search($pdo$andere_parameter); 
            Crashkurs zum Thema Rechtschreibung: [COLOR="Green"]normalerweise[/COLOR] ([COLOR="Red"]normaler weise[/COLOR] oder [COLOR="Red"]normaler weiße[/COLOR]), [COLOR="DarkGreen"]Standard[/COLOR] ([COLOR="Red"]Standart[/COLOR]), [COLOR="DarkGreen"]eben[/COLOR] ([COLOR="Red"]ebend[/COLOR])

            Kommentar


            • #7
              Eine Klasse Search ist übrigens selten sinnvoll. Was du da als Beispiel gibst ist einfach nur prozeduraler Code, der auf Klassen basiert - das ist keine Objektorientierung. Gefühl dafür bekommt man mit der Zeit
              Crashkurs zum Thema Rechtschreibung: [COLOR="Green"]normalerweise[/COLOR] ([COLOR="Red"]normaler weise[/COLOR] oder [COLOR="Red"]normaler weiße[/COLOR]), [COLOR="DarkGreen"]Standard[/COLOR] ([COLOR="Red"]Standart[/COLOR]), [COLOR="DarkGreen"]eben[/COLOR] ([COLOR="Red"]ebend[/COLOR])

              Kommentar

              Lädt...
              X