Php Klassenvariable wird in der funktion nicht übernommen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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

    Source Code

    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. ?>
    Display All
  • 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:

    Source Code

    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. ?>
    Display All


    Mfg Splasch

    The post was edited 7 times, last by splasch ().

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

    Source Code

    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>
    Display All

    Config/config.txt

    Source Code

    1. style: white

    Util/ConfigReader.class.php

    Source Code

    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. ?>
    Display All
  • 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!

    Source Code

    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>
    Display All