Jag har en del små frågor om PHP. En del kan tyckas patetiska, men jag är bara sugen på att veta hur man får till bäst kod. :)
1. Hur gör ni med era kod avgränsare så att säga. Två exempel här.
Kör ni detta:
<?php
massa php-kod här
?>
Hejsan, Jag surfar på <?php $favoritsida?> just precis nu
<?php mer php-kod ?>
Eller kör ni såhär:
<?php
massa php-kod här
echo "Hejsan, Jag surfar på ".$favoritsida." just precis nu";
?>
2. Är det någon prestanda skillnad på att skriva
"select * from tabell"
och
"select fält, fält, fält, fält from tabell" i php?
3. Är det någon skillnad på att använda "date" typen på ett databaasfält och på så sätt få ut datumet, eller att använda "varchar" eller liknande och sen lägga in datumet i en insert?
4. Ungersk notation, är det endast bra för att strukturera upp koden, eller har det med prestandan att göra också? Vad finns det för olika notationssätt(?)? T.ex StrText, IntTal osv.
Bygger på om jag kommer på något mera. Tack på förhand. :)
Jag började dock söka lite på templates, för jag undrade vad det var, men det verkar ju krångligt...fast ändå smidigt. :)
Jag är dock lite bortdribblad, finns det någon sida som går igenom templates någonstans? Hittade lite länkar till färdiga paket, men jag vill vara lite gör-det-själv-Martin-Timell, för som ni vet så är ju det alltid roligast. :)
Själva designen på sidan lägger man ju i index.php när man kör med templates, men var är själva php-köret? Ligger det i databas eller i separata php-filer?
PHP-köret ligger i dina PHP-filer, din HTML placeras i separata filer, t.ex. med filändelsen .tpl. All information som ska fylla din sida, ligger bäst i en databas. :)
Ett exempel: TemplateClass.php
<?php
class MyTemplateClass {
// Sedan PHP4.2.2 ( Tror jag det är... ) kan man använda privata variabler i klasserna
private $templatePage
function MyTemplateClass( $strPage ) {
// Nedan läggs din HTML-fil till i variabeln $templatePage
$this->templatePage = implode( '', file( $strPage ) );
}
function setValue( $keyName, $value ) {
$this->templatePage = str_replace( "{" . $keyName . "}", $value, $this->templatePage );
}
function showPage() {
echo $this->templatePage;
}
}
<?php
require( "TemplateClass.php" );
$templateClass = new MyTemplateClass( "MyTemplate.tpl" );
$templateClass->setValue( "SID_TITEL", "Min titel!" );
$templateClass->setValue( "SID_INNEHALL", "Det här är mitt innehåll på min sida, som är uppbyggt med templates." );
$templateClass->showPage();
?>
Lägg alla filerna i en och samma mapp, så får du se hur de fungerar. :)
Är det något du inte förstår med filerna, eller något annat du undrar över, fråga på! :D
PHP-filen TemplateClass.php innehåller en klass för att hantera template-filer, där metoder för att lägga till värden finns, och även en metod för att visa sidan.
Alla {} som omsluter ett namn i dina template-filer, brukar jag kalla för nycklar. Dessa nycklar bestämmer var information presenteras på din sida. T.ex. nyckeln SID_TITEL ( Som syns i templaten som {SID_TITEL} ) bestämmer var din titel ska vara. Dessa nycklar byts ut mot värden i metoden setValue() i klassen MyTemplateClass. Första parametern till setValue() visar vilken nyckel som ska användas, andra parametern visar vad nyckeln ska innehålla.
PHP-filen MyPHP.php är själva PHP-dokumentet. Först inkluderas klassen MyTemplateClass från filen TemplateClass.php, och sedan skapas en instans av klassen. Instansen i mitt exempel kallade jag för $templateClass. Från denna instans, kör man metoderna för att formatera din template-fil, och för att visa resultatet för klienten ( Med metoden showPage() ).
Det är i stort sett allt. Det här är en väldigt, väldigt simpel template-klass, men den fungerar. ( Eller borde fungera, åtminstone ;) )
Njä, man tar inte emot någonting från adressraden i mitt exempel. Informationen som ska visas finns i PHP-dokumentet MyPHP.php, när man anropar metoden MyTemplateClass::setValue().
...
$templateClass->setValue( "SID_INNEHALL", "Det här är mitt innehåll på min sida, som är uppbyggt med templates." );
...
Som du ser så anropas metoden setValue(), och nyckeln SID_INNEHALL ( Som definierats med {SID_INNEHALL} i template-filen ) visar att det är den som klassen ska byta ut mot värdet "Det här är mitt innehåll på min sida, som är uppbyggt med templates." som också skickas till metoden.
Det dokument man anropar med adressraden för att visa sidan är MyPHP.php, och den genererade sidan som visas för klienten är:
<html>
<head>
<title>Min Titel!</title>
</head>
<body>
Det här är mitt innehåll på min sida, som är uppbyggt med templates.
</body>
</html>
Det har ingenting med variabler utifrån PHP att göra. :)
Det beror väl på om man ska hämta alla fält eller inte? Som jag förstod det, så skulle inte alla fält hämtas - och då borde det gå snabbare med att ange fältnamnen?
Men du är ju SQL-mastern på webForum, så jag får väl förlita mig på dig. :)