You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Stuppsman

User / Kunde

  • "Stuppsman" started this thread

Posts: 2,766

Thanks: 25

  • Send private message

1

Tuesday, February 20th 2018, 8:29pm

namespaces machen mich fertig..

Hi zusammen,

ich programmier eigentlich ganz passabel in Java und bin momentan in nem Praktikum, bei dem ich mit PHP arbeiten muss. Bisher hab ich alles geschafft, was ich sollte, aber was sich meinem Verständnis immernoch komplett entzieht, sind die Importe bei PHP. Irgendwas ganz grundlegendes muss mir da fehlen, obwohl ich da schon einige Tutorials durchgearbeitet habe.. Momentan steh ich wieder vor genau dem Problem, sitz mit dem hier zusammen und versuche im lokalen Netzwerk eine Seite darzustellen.

index.php

PHP Source code

1
2
3
4
5
6
7
8
9
<?php

namespace repertoire;

error_reporting(E_ALL);
Main::init();
echo Main::getMainContent();

?>

main.php

PHP Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php

namespace repertoire;

class Main {
    static $db;
    static function init() {
        $host "localhost";
        $dbname "repertoire";
        $username "Stu";
        $pw "pw";
        
        self::$db = new \repertoire\db\Connection ($host$dbname$username$pw);
    }
    static function getMainContent() {
        return 
        "<html>" self::getHTMLHead () . 
            "<body>" self::getHeaderPicture () .
                "<table class='sortierbar' id='Table_Songlist'>" . 
                self::getTableHeader () . 
                self::getTableContentFromDB () . 
                "</table>" . 
                self::getEingabeformular () . 
                self::getSongtext() .
            "</body>" . 
        "</html>";
    }

    static function getHTMLHead() {
        return file_get_contents "html/main_HTMLheader.html" );
    }
    static function getHeaderPicture() {
        return file_get_contents "html/main_header_picture.html" );
    }
    static function getTableHeader() {
        return file_get_contents "html/main_table_header.html" );
    }
    static function getTableContentFromDB() {
        $output "<tbody id='Table_Body'>";
        
        foreach (\repertoire\php\Song::getSongs () as $id => $song ) {
            $interpret $song->getInterpret ();
            $songtitel $song->getTitel ();
            $statusbar "coming soon";
            $utilbar "coming soon";
            $contents file_get_contents "html/main_table_row_template.html" );
            $contents str_replace "{id}"$id$contents );
            $contents str_replace "{Interpret}"$interpret$contents );
            $contents str_replace "{Songtitel}"$songtitel$contents );
            $contents str_replace "{Statusbar}"$statusbar$contents );
            $contents str_replace "{Utilbar}"$utilbar$contents );
            
            $output .= $contents;
        }
        $output .= "</tbody>";
        return $output;
    }
    static function getEingabeformular() {
        return file_get_contents "html/eingabeformular.html" );
    }
    static function getSongtext($songtext "Wähle einen Song, um den Text anzuzeigen") {
        return str_replace("{text}"$songtextfile_get_contents("html/songtext.html"));
    }
}

Alle Möglichkeiten, ob über den kompletten Klassennamen \repertoire\Main, ob über den relativen, weil ja im selben Namespace, also wie im Code nur Main führen zu folgendem Fehler:

Source code

1
Fatal error: Uncaught Error: Class 'repertoire\Main' not found in C:\xampp\htdocs\projects\php\repertoire\New\index.php:6 Stack trace: #0 {main} thrown in C:\xampp\htdocs\projects\php\repertoire\New\index.php on line 6


Ich bin jetzt schon nen ganzen Moment lang am googlen und alle Möglichkeiten, die ich finde, funktionieren nicht.. wo liegt mein Fehler, was mach ich falsch? Es muss was so blödes sein, dass ich da schon seit geraumter Zeit drauf schaue, ohne es zu finden.. kann jemand helfen?

Edit: Man muss die benutzten Dateien vorher noch per require einbinden.. aber aus dem Tutorial ging das jetzt nicht hervor. Hm, das sind wohl die fehlenden Grundlagen, die ich meinte. Trotzdem danke für eure Zeit.
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

This post has been edited 1 times, last edit by "Stuppsman" (Feb 20th 2018, 9:49pm)


EuroCent

User / Kunde

  • "EuroCent" is male

Posts: 376

Location: Thüringen

Occupation: Vodafone Mitarbeiter

  • Send private message

2

Tuesday, February 27th 2018, 7:27pm

Versuch mal bitte folgendes:

aufruf dann via \Main::getMainContent();

Wichtig vor dem Main ein (Backslash) \ vorsetzen :)

Stuppsman

User / Kunde

  • "Stuppsman" started this thread

Posts: 2,766

Thanks: 25

  • Send private message

3

Monday, March 5th 2018, 3:31pm

Danke für den Versuch, aber was du schreibst, kann leider nicht klappen. Mit dem Backslash gehst du zum root-Namespace.. Also zum Beispiel, wenn du die Klasse Exception benutzt, in der Klasse, für die ein Namespace angegeben wurde, musst du den Backslash davorsetzen, sonst sucht der im relativen Namespace und nicht im globalen.
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net