-
Hallo Froum,
seit einen halben Jahr beschäftige ich mich mit der Objektorienterter Programmierung in PHP 5.3.
Dazu habe ich mir das Buch "PHP 5.3 & MySql 5.1 von Galileo Computing" besorgt, und bin da auf generelle Fragen gestoßen.
In dem Buch wird eine art Grundgerüst genaut, wo mann dann das Grundgerüsst mit Klassen beliebig erweitern kann/soll.
Dort gibt es die Klasse HTML die public static Methoden besitzt.
doch die Klasse Blog zubeispiel hat keine statische Methoden Mehr.. Man muss dann Objekte Instazieren.
Da stellt sich mir die erste Frage.
Wann sollte man Objekte erstellen, und wann sollte man auf statische Methoden zugreifen wie HTML:: printHead();
Dann werden die im Buch beschriben Methoden als Funktionen erstellt die ein String als Rückgabewert haben.
so stzt man dann in der PHP Seite beispiel index.php "echo HTML:: printBody();".
Oder Es gibt den Ansatz, dass man auf Rückgabe verzecihtet und dann einfach mit echos in der Methode Arbeitet.
Besipiel in der Index Datei würde es so ausehn einfach HTML:: printBody();
Ich finde beide Ansatze Ärgerlich und Anstrengend da man den HTML Code dann mühleselig generiert Beispiel so:
Code :1
echo '<body>'."\n;
bzw.
Code :1
$output.='<body>'."\n;
Ist es da nicht sinnvoller die PHP Struktur zu unterbrechen und einfach HTML-Code einzugeben?
Wie händelt ihr das?
Und dann hätte ich ncoh eine Andere Frage
Wie Arbeitet ihr um ein Template zu erstellen? Was sind automatisierte Module?
Ich hoffe ihr könnt mir da ein wenig Helfen. Leider wird in den Buch nicht so auf Vererbung gesetzt was ja wirklich ein Merkmal der OOP ist. Aber ich finde es so auch einfacher...
Also mit der Konzeptionellen Art des professionellen Webcodens.. Zum Glück hat mich dieses Buch auf die Javascript Libary jQery gebracht, wo ich noch in einem Anderen Kontext lernen muss.. Danke An den Mod Maik an dieser Stelle..
-
01.05.10 16:40 #2
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Auch wenn ich es eigentlich nicht vor hatte, so muss ich dich auch darauf verweisen, dass es beim objektorientierten Programmieren auch Klassen gibt, die sowohl statische als auch nichtstatische Methoden enthalten. Beispielsweise bei Singletons (Objekte, die man nur einmal instanziieren kann und man danach immer auf die gleiche Instanz zugreift) erstellt man über eine statische Methode das Objekt, weil man bewusst den Konstruktor als private gekennzeichnet hat.
Man kann also den großen Unterschied zwischen statischen und nichtstatischen Methoden darin erkennen, dass statische Methoden direkt aufgerufen werden können, nichtstatische Methoden werden letztendlich direkt auf das Objekt angewendet, von dem aus man die Methode aufruft. Was weiterhin ein Unterschied ist, ist, dass man in statischen Methoden die klasseninterne Variable $this nicht verwenden kann, sondern nur self, was man aber auch in nichtstatischen Methoden aufruften kann. Somit kann man in $this Werte festlegen, die objektspezifisch sind, in self kann man objektübergreifende Werte festlegen.
Zu dem Templates: die meisten lösen das Problem damit, dass sie in den Templates kryptischen Code einfügen, denn sie dann später in PHP durch den entsprechenden Wert ersetzen. Das ist, wie ich meine, aber doch auf eine gewisse Art absurd, da man an dieser Stelle doch gleich die Variable einfügen kann, die den entsprechenden Wert enthält.
Zum Vergleich:
- so wie es viele handhaben:
- wie ich es handhabe:PHP-Code:<h1>{$headline}</h1>
PHP-Code:<h1><?php echo $headline; ?></h1>Geändert von einfach nur crack (01.05.10 um 16:44 Uhr)
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Ich muss ehrlich zugeben, dass ich nicht so viel verstanden habe...
also fügst Du dynamische inhalte in statische html tags ein? und generierst nicht den Code wie ich es mache echo"<tag>"; bzw. $string.="<tag>";
gibt es einen nachteil.. wenn man die tags rein in html schreibt?
Ihc finde so kannman den html Markup dann viel besser formatieren..
-
01.05.10 18:53 #4
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Also ich arbeite auch hauptsächlich mit Templates, da ich das Generieren von HTML-Quelltext in PHP bescheuert finde. Es gibt einige Sachen, da muss man es so handhaben, aber in den meisten Fällen belastet es nur die Leistung und die beeinflusst die Geschwindigkeit in der die Seite geladen wird. Also sollte man doch eher versuchen PHP von HTML zu trennen. Kurzum: ich schließe mich deiner Meinung an.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Also ist sowas hier eine Art Template?
Und es geht auf den richrigen Weg
PHP-Code:<?php
session_start();
require_once('classes/settings.php');
require_once('classes/DBConnection.php');
require_once('classes/HTML.php');
//CAPTCHA prüfung
require_once('securimage/securimage.php');
$securimage = new Securimage();
if (isset($_POST['send']) &&
isset($_POST['name']) &&
isset($_POST['email']) &&
isset($_POST['message']) &&
isset($_POST['subject']))
{
if ($securimage->check($_POST['captcha_code']) == false)
{
// the code was incorrect
// handle the error accordingly with your other error checking
// or you can do something really basic like this
echo '<script language="javascript">alert("The code you entered was incorrect.");</script>';
}
else
{
$sender = $_POST['email'];
$empfaenger = "info@vrc-racing.com";
$betreff = $_POST['subject'];
$mailtext =
'<html>
<head>
<title>'.$betreff.'</title>
</head>
<body>
<p>Name: '.$_POST["name"].'</p>
<p>E-Mail: '.$_POST["email"].'</p>
<p>'.$_POST["message"].'</p>
</body>
</html>';
// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// zusätzliche Header
$header .= 'To:<'.$empfaenger.'>' . "\r\n";
$header .= 'From: '.$_POST["name"].' <'.$_POST["email"].'>' . "\r\n";
$header .= 'Cc: bener1hannover@hotmail.com' . "\r\n";
$header .= 'Bcc: mista1982@googlemail.com' . "\r\n";
mail($empfaenger, $betreff, $mailtext, $header);
echo '<script language="javascript">alert("Thank you! \n \n The email was send sucsefully!"); location.href = "/test/index.php"; </script>';
exit;
}
}
//--------------------
HTML::printHead();
?>
<?
HTML::printBody();
?>
<div id="contact">
<h1><?= $_SESSION['language']==1 ? 'Kontakt' : 'Contact Us' ?></h1>
<br />
<form method="post" action="#">
<p><?= $_SESSION['language']==1 ? 'Ihr Name*' : 'Your Name*' ?></p>
<p><input type="text" class="inputtext" id="idName" name="name" onblur="validateName();" value="<? if (isset($_POST['send']) && isset($_POST['name'])) echo $_POST['name'];?>" />
<img class="failimg" id="failname" src="http://www.tutorials.de/forum/images/empty.png" alt="empty" /></p>
<p><?= $_SESSION['language']==1 ? 'Ihre E-Mail* (wird nicht veröffentlicht)' : 'Your E-mail* (will not be published) ' ?></p>
<p><input type="text" class="inputtext" id="email" name="email" onblur="validateEmail();" value="<? if (isset($_POST['send']) && isset($_POST['email'])) echo $_POST['email'];?>" />
<img class="failimg" id="failmail" src="http://www.tutorials.de/forum/images/empty.png" alt="empty" /></p>
<p><?= $_SESSION['language']==1 ? 'Betreff' : 'Subject' ?></p>
<p><input type="text" class="inputtext" name="subject" value="<? if (isset($_POST['send']) && isset($_POST['subject'])) echo $_POST['subject'];?>" /></p>
<p><?= $_SESSION['language']==1 ? 'Ihre Nachricht' : 'Your Message' ?></p>
<p><textarea rows="10" id="idMessage" name="message" onblur="validateMessage();" cols="40"><? if (isset($_POST['send']) && isset($_POST['message'])) echo $_POST['message'];?></textarea></p>
<p><img class="failimg" id="failmessage" src="http://www.tutorials.de/forum/images/empty.png" alt="empty" /></p>
<div id="captcha_rahmen">
<p><?= $_SESSION['language']==1 ? 'Spamschutz*' : 'Seccurity image*' ?></p>
<p><img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image" /></p><a href="#" style="float:left;" onclick="document.getElementById('captcha').src = 'securimage/securimage_show.php?' + Math.random(); return false"><img class="refresh" src="securimage/images/refresh.gif" alt="refresh" /></a>
<p style="float:left;"><?= $_SESSION['language']==1 ? 'Bitte den Code eingeben ' : 'Enter the code ' ?></p><p style="float:left;"><input class="captcha" type="text" name="captcha_code" size="10" maxlength="6" /></p>
</div>
<table style="width:630px; margin-top:10px; margin-right:15px; margin-bottom:15px">
<tr>
<td><p><input id="btn_email" type="submit" name="send" value="<?= $_SESSION['language']==1 ? 'Nachricht senden' : 'Send message' ?>" ></input></p></td><td class="caputure_pflichtfelder"><p><?= $_SESSION['language']==1 ? '*Pflichtfelder' : '*Required fields' ?></p></td>
</tr>
</table>
</form>
</div>
<?php
HTML::printFoot();
?>
-
01.05.10 19:28 #6
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Wenn du dein Skript noch etwas aufräumst, dann sieht das Ganze doch schon recht nett aus. Kann leider nicht mehr dazu sagen, da ich nicht weiß, was die einzelnen Objekte tätigen und wie sie aufgebaut sind.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Inwieweit meinst Du das mit den "Aufräumen"?
und die Objekte? naja es gibt ja nur Statische methoden, der HTML Klasse.. Dort wird in printHead() der Anfang von head und Grundgerüst geschrieben sowie die ganzen Scripte und Stylesheats geladen...
die Methode printBody die gesammten Divs bis zum content.. und printfoot() schließt einige Divs das Body und Html Tag..
Jetzt stellt mich die Frage, wie ich die einzelnen HTML Methoden handhaben soll.. also mit Rückgabe eines Strings? in der Methode Selber mit echo ausgeben oder wie ich meine :
Das Beispiel Obne ist natürlich vereinfacht..PHP-Code:public static function printBody(){
?>
<body>
<div id="container">
<div id="content">
<?
}
Kurz eine OffTopic Frage: Mit welcher IDE kann man php Produkiv debuggen? Also den code den man geändert hat auf ein webserver laden und gleich debuggen?
Eclipse PDT? Nebeans PHP?
-
01.05.10 21:01 #8
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Ich habe früher mit Dreamweaver gearbeitet, aber seit dem ich auf Mac umgestiegen bin nutze ich Xcode (das ist nicht explizit für PHP gedacht, aber funktioniert) und lade meine Daten mit Cyperduck hoch, wenn nötig. Ansonsten läuft das alles über meinen localhost.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
verscuhe grade mit netbeans zu debuggen auf localhost aber irgendwie kommt immer ne meldung, dass xdebug nicht konfiguriert ist oder so.. naja anderes thema.. ich möchte dich nochmal bitten, meine oben erwähnte Frage zu beantworten ob man quasi in den Methoden php mit
?>
abrricht und HTML Markup schreibe und gegebenfals mit <?= phpcode ?> einsetze und dann wieder die methode mit <? } abzuschließen?
-
01.05.10 21:38 #10
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Ich weiß nicht, ob das möglich ist. Aber ich weiß, dass man HTML-Seiten mit include, include_once, require und require_once innerhalb von Methoden einladen kann und diese dann als Ausgabe an den Browser verstanden werden, könntest du es einfach mal probieren. Wäre mal interessant zu erfahren, ob das möglich ist.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
habe jetzt ein ganz anderes Problem:
Ich habe den xdebugger ind netbeans und php 5.3.1 zum laufen gebracuht, jedoch ist php jetzt viel pingeliger:
wird nicht interpretiert.. sondern nur nochPHP-Code:<? ?>Ok das kann man ja schnell ändern aber dasPHP-Code:<?php ?>funktioniert nicht mehr.. wurde es ersezt?PHP-Code:<?= ?>
Oder sollte ich zurück auf php 5.3.0?
-
Die einzig wirklich richtige Schreibweise ist
Alle anderen, ob nun das Kurztag <? oder das ASP-Tag <% sind Ueberbleibsel aus einer Zeit vor den Pyramiden und sollten vermieden werden, da sie bereits jetzt nur noch optional unterstuetzt werden und ueber kurz oder lang auch aus PHP rausfliegen werden.PHP-Code:<?php ?>
Entsprechend, wenn Dein Code noch andere Tags als <?php nutzt, dann solltest Du an dem Ende arbeiten, und nicht der PHP-Konfiguration.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Ok
Dass heißt jetzt, dass das
nicht mehr geht und ich es mitPHP-Code:<=? $string ?>
ersetzen muss?PHP-Code:<?php echo $string ?>
wie ersetze ich dann dieses if konstrukt?
das geht so nicht:PHP-Code:<?= $_SESSION['language']==1 ? 'Kontakt' : 'Contact Us' ?>
wie ist es richtig?PHP-Code:<?php $_SESSION['language']==1 ? echo 'Kontakt' : echo 'Contact Us' ?>
-
PHP-Code:
<?php echo $_SESSION['language']==1 ? 'Kontakt' : 'Contact Us'; ?>PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Ähnliche Themen
-
Allgemeine Fragen
Von selle1 im Forum Hosting & WebserverAntworten: 8Letzter Beitrag: 17.05.07, 22:00 -
Allgemeine Fragen zur DLL
Von Black_Deal im Forum .NET ArchivAntworten: 3Letzter Beitrag: 29.10.04, 12:58 -
2 allgemeine Fragen
Von bobbey im Forum 3D Studio MaxAntworten: 8Letzter Beitrag: 27.08.04, 11:30 -
asp,3 allgemeine fragen
Von Drischmaeh im Forum ASPAntworten: 8Letzter Beitrag: 16.08.04, 13:46 -
Allgemeine DTP-Fragen
Von Emslaender im Forum Desktop Publishing (DTP)Antworten: 12Letzter Beitrag: 03.03.04, 23:04



5Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren