PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   heredoc syntax (http://www.selfphp.de/forum/showthread.php?t=24752)

SanPedro 12.10.2012 22:36:43

heredoc syntax
 
Hallo,
ich möchte mir eine Klasse für ein Anmeldeformular erstellen habe aber Probleme mit der heredoc Syntax.

PHP-Code:

<?php
class anmeldeform{
    private 
$action;
        
    
    private 
$form= <<<Überschrift
            <h1>hier loggen Sie sich ein </h1>
            also bitte<br>
            hier:
            <table>
                <form action="$this
->action" method="post">
                <tr>
                    <td>Benutzername</td>
                    <td><input type="text" name="benuztername"></input></td>
    
                </tr>
                <tr>
                    <td>Passwort</td>
                    <td><input type="password" name="passwort"></input></td>
                </tr>
                <tr>
                    <td><input type="submit" value="abschicken"></input> </td>
                </tr>
            
    
            </table>
            </form>
Überschrift;
    function 
__construct($zieldatei){
            
$this->action=$zieldatei;    
        }
    function 
formularErstellen(){
        echo 
$this->form;
        
    }
}
?>


Der Fehlercode:
Code:

Parse error: syntax error, unexpected T_VARIABLE, expecting T_END_HEREDOC in /home/cabanni/public_html/worksp/Kursangebot/AnmeldeForm.php on line 11
Linie 11 ist diese Zeile:
Code:

<form action="$this->action" method="post">
Wäre euch sehr dankbar wenn ihr mich zu der Lösung meines Fehlers führt ;)

Interessant und eigentlich so geplant, wäre es auch so:

Code:

private static $action="$_SERVER['PHP_SELF'];
dann müsste Zeile 11 wohl so aussehen:
Code:

<form action="self::$action" method="post">
Leider ist über Heredoc wenig zu finden, zumindest wenn es über die Verwendung einer simplen Variable hinaus geht.

Gruß

SanPedro 13.10.2012 00:32:54

AW: heredoc syntax
 
ok so ist es zumindest funktional, interessieren würde mich die Syntax von Heredoc jedoch dennoch ;)

PHP-Code:

<?php
class anmeldeform{
        
    public function 
__invoke($action){
        echo <<<Überschrift
    
            <h1>hier loggen Sie sich ein </h1>
            also bitte<br>
            hier:
            <table>
                <form action="$action" method="post">
                <tr>
                    <td>Benutzername</td>
                    <td><input type="text" name="benuztername"></input></td>
    
                </tr>
                <tr>
                    <td>Passwort</td>
                    <td><input type="password" name="passwort"></input></td>
                </tr>
                <tr>
                    <td><input type="submit" value="abschicken"></input> </td>
                </tr>
            
    
            </table>
            </form>
Überschrift;
    }
}
?>


vt1816 13.10.2012 01:08:22

AW: heredoc syntax
 
Hallo und willkommen hier im Forum.


Zitat:

Zitat von SanPedro (Beitrag 143809)
ok so ist es zumindest funktional, interessieren würde mich die Syntax von Heredoc jedoch dennoch ;)

Was hast Du gegen Suchmaschinen?

Zum Beispiel findet man bei SELFPHP im Praxisbuch Heredoc.

SanPedro 13.10.2012 01:30:05

Zitat:

Was hast Du gegen Suchmaschinen?

Zum Beispiel findet man bei SELFPHP im Praxisbuch Heredoc.
Danke für den "hilfreichen innovativen Tip", ich habe die Suchmaschinen natürlich scbon stundenlang befragt, aber für den Kontext in dem ich nach der Syntax von Heredoc fragte fand ich keine Antwort die funktioniert, ebenso wie im Praxisbuch.
Schlussendlich kam ich zu dem Schluss im Forum Experten um Hilfe zu bitten. Nun kamst du.

Es geht darum in der Klasse diese info statisch zu haben:
PHP-Code:

private static $action=$_SERVER[PHP_SELF]; 

sie aber bei Bedarf überschreiben zu können und dann mit self:: einzubinden aber heredoc nimmt weder "$this->action" an, noch self::$action und auch innerhalb {...} gehts nicht.

vt1816 13.10.2012 01:45:12

AW: heredoc syntax
 
Zitat:

Zitat von SanPedro (Beitrag 143812)
Es geht darum in der Klasse diese info statisch zu haben:
PHP-Code:

private static $action=$_SERVER[PHP_SELF]; 


Eigentor!

Wenn Du die SuMa Deines Vertrauens bereits stundenlang befragt hast, dann sollte Dir jedoch schon bekannt sein, dass
PHP-Code:

$_SERVER[PHP_SELF

PFUI ist!



So und jetzt kommst Du.

meikel (†) 13.10.2012 07:43:59

AW: heredoc syntax
 
Zitat:

Zitat von SanPedro (Beitrag 143808)
ich möchte mir eine Klasse für ein Anmeldeformular erstellen habe aber Probleme mit der heredoc Syntax.

http://www.php.net/manual/en/languag...syntax.heredoc

Zitat:

PHP-Code:

<?php
class anmeldeform{
    private 
$action;
        
#-------------------------vvvvvvvvv
    
private $form= <<<Überschrift


Was soll der Umlaut im open identifier? Auch wenns funktionieren sollte, halte Dich besser an die Namenskonventionen.

Zitat:

PHP-Code:

                <form action="$this->action" method="post"


Sowas ist mit oder ohne Heredoc verboten.
1. $this ist in den Properties noch nicht bekannt. Die Methode action auch nicht.
2. "Heredocs can not be used for initializing class properties."

Zitat:

Leider ist über Heredoc wenig zu finden, zumindest wenn es über die Verwendung einer simplen Variable hinaus geht.
Das, was im Handbuch steht, reicht doch. Warum muß es denn ausgerechnet dieser Fummel sein? Wenn Dir Templates nicht gefallen, dann verwende eben sprintf()

PHP-Code:

function login($action $_SERVER['SCRIPT_NAME'], $out false){
  
$txt sprintf('    
            <h1>hier loggen Sie sich ein </h1>
            also bitte<br>
            hier:
            <table>
                <form action="%s" method="post">
                <tr>
                    <td>Benutzername</td>
                    <td><input type="text" name="benuztername"></input></td>
    
                </tr>
                <tr>
                    <td>Passwort</td>
                    <td><input type="password" name="passwort"></input></td>
                </tr>
                <tr>
                    <td><input type="submit" value="abschicken"></input> </td>
                </tr>
            </table>
            </form>'
,
      
$action);
  if (
$out == false)
    return 
$txt;
  else
    echo 
$txt;



SanPedro 13.10.2012 11:51:46

AW: heredoc syntax
 
Danke Meikel,
es geht so also nicht, das ist die Info die mir fehlte.

Gruß


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:31:19 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.