Php Klassenvariable wird in der funktion nicht übernommen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Php Klassenvariable wird in der funktion nicht übernommen

    Ich habe eine Klasse mit Php erstellt die auch aufgerufen wird und da klappt alles aber wenn ich die funktion get aufrufe kommt nichts zum vorschein ich hab $file mit print_r getestet und das hat nichts angezeigt

    Quellcode

    1. <?php
    2. class ConfigReader {
    3. public $file = "";
    4. public function ConfigReader($arg0, $isFileName = TRUE) {
    5. if($isFileName) {
    6. $file = file($arg0);
    7. } else {
    8. $file = $arg0;
    9. }
    10. }
    11. public function get($arg) {
    12. foreach($file as $line) {
    13. $sides = explode(":", $line);
    14. if($sides[0] == $arg) {
    15. return $sides[1];
    16. }
    17. }
    18. }
    19. }
    20. ?>
    Alles anzeigen
  • Wie ruft du den die Get funktion überhaupt auf? Die Methode get erwartet ein Array. Wenn das nicht vorhanden ist es nur logisch das auch nix ausgeben werden kann.

    Weiters gibt es bei dir die Variable $file die nicht exsitiert in der Methode get du kanst keine Schleife aus nichts durchlaufen lassen (Nicht definiert kein Inhalt!)

    Weiters solltes du auch immer Prüfen ob das kommt was erwartet wird. Sonst wirste mal unschöne Fehlermelungen von php bekommen.

    Und bitte verwende Kommentare du wirst es dir selber später Danken wenn du jahre später mit der Klasse arbeitest.
    Desweiteren können auch Fremde user sich schneller einen überblick über deinen Quellcode machen.

    Hier ich hab dir das ganze mal überarbeitet:

    Quellcode

    1. <?php
    2. /**
    3. * ConfigReader
    4. * @version 1.0
    5. * @author Dein Name
    6. * Filename: derdateiname.php
    7. * Beschreibung was die Klasse macht
    8. **/
    9. class ConfigReader
    10. {
    11. public $file; # Datei Inhalt
    12. /**
    13. * ConfigReader Beschreibung der Methode
    14. * Einlesen der Datei
    15. * @param string $arg0 (Type der Variable)
    16. * @param bolean $isFileName
    17. * @return entuelle rückgabe werte
    18. */
    19. public function ConfigReader($arg0, $isFileName = TRUE)
    20. {
    21. if($isFileName)
    22. {
    23. $this->file = file($arg0);
    24. }else{
    25. $this->file = $arg0;
    26. }
    27. }
    28. /**
    29. * get Beschreibung der Methode
    30. * @param string $arg
    31. * @return string
    32. */
    33. public function get($arg)
    34. {
    35. if (is_array($this->file))
    36. {
    37. foreach($this->file as $line)
    38. {
    39. $sides = explode(":", $line);
    40. if($sides[0] == $arg)
    41. {
    42. return $sides[1];
    43. }
    44. }
    45. }else{
    46. echo "Keine Datei eingelesen bitte vorher die Methode ConfigReader aufrufen";
    47. }
    48. }
    49. }
    50. ?>
    Alles anzeigen


    Mfg Splasch

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von splasch ()

  • Klappt immer noch nicht Fatal error: Using $this when not in object context in ...\Util\ConfigReader.class.php on line 18
    index.php

    Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. ini_set('display_errors', 1);
    4. require_once("Util/Document.class.php");
    5. ?>
    6. <!DOCTYPE html>
    7. <html lang="en">
    8. <head>
    9. <meta charset="utf-8" />
    10. </head>
    11. <body>
    12. Te
    13. <?php
    14. $configreader = new ConfigReader("Config/config.txt");
    15. echo $configreader::get("style");
    16. ?>
    17. st
    18. </body>
    19. </html>
    Alles anzeigen

    Config/config.txt

    Quellcode

    1. style: white

    Util/ConfigReader.class.php

    Quellcode

    1. <?php
    2. class ConfigReader
    3. {
    4. public $file;
    5. public function ConfigReader($arg0, $isFileName = TRUE)
    6. {
    7. if($isFileName)
    8. {
    9. $this->file = file($arg0);
    10. } else {
    11. $this->file = $arg0;
    12. }
    13. }
    14. public function get($arg)
    15. {
    16. if (is_array($this->file)) // Hier gibts ein Fehler
    17. {
    18. foreach($this->file as $line)
    19. {
    20. $sides = explode(":", $line);
    21. if($sides[0] == $arg)
    22. {
    23. return $sides[1];
    24. }
    25. }
    26. }else{
    27. echo "Keine Datei eingelesen bitte vorher die Methode ConfigReader aufrufen";
    28. }
    29. }
    30. }
    31. ?>
    Alles anzeigen
  • Klappt immer noch nicht Fatal error: Using $this when not in object context in ...\Util\ConfigReader.class.php on line 18


    Du kannst eine Methode nur statisch aufrufen wenn sie als solches auch deklariert ist!

    Quellcode

    1. <?php
    2. error_reporting(E_ALL);
    3. ini_set('display_errors', 1);
    4. require_once("Util/Document.class.php");
    5. ?>
    6. <!DOCTYPE html>
    7. <html lang="en">
    8. <head>
    9. <meta charset="utf-8" />
    10. </head>
    11. <body>
    12. Te
    13. <?php
    14. $configreader = new ConfigReader("Config/config.txt");
    15. echo $configreader->get("style"); # Hier das ändern!
    16. ?>
    17. st
    18. </body>
    19. </html>
    Alles anzeigen