webForumDet fria alternativet

Blandade småfrågor

PHPur PHP

13 svar · 429 visningar · startad av Bäckman

Medlem sedan nov. 2001274 inlägg
Frågan#1

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. :)

Medlem sedan mars 20007 896 inlägg
#2

1. Inget av dem. Använder templates och klasser. Men alt.2 är det snyggaste och bästa sättet av de två.

2. Ja, alt.2 är snabbare.

3. Använder du datatypen date eller timestamp kan du ju alltid sortera efter det fältet, vilket inte går om du har datatypen varchar.

4. Det har ingenting med prestanda att göra.

Hoppas att du blev klokare. :)

Medlem sedan nov. 2001274 inlägg
#3

Ditt svar var utmärkt.

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?

Medlem sedan mars 20007 896 inlägg
#4

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;
     }
}

MyTemplate.tpl

<html>
<head>
<title>{SID_TITEL}</title>
</head>
<body>
{SID_INNEHALL}
</body>
</html>

MyPHP.php

<?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

Medlem sedan mars 20007 896 inlägg
#5

Jag lägger till en liten förklaring:

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 ;) )

Medlem sedan nov. 2001274 inlägg
#6

Doh, glömde kolla efter nya inlägg, så jag missade din förklaring efter att jag kollat på filerna. ;)

Medlem sedan mars 20007 896 inlägg
#7

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. :)

Medlem sedan nov. 2001274 inlägg
#8

Nu är nog allt nästan glasklart, tror jag. Tack så mycket för all hjälp. :)

Medlem sedan mars 20007 896 inlägg
#9

Jag skrev en egen klass för länge sen, som jag använder fortfarande ( Med en del modifieringar, dock ). Du hittar den här.

Medlem sedan juli 200212 inlägg
#10

SPiN, vad heter du på php-portalen??

Medlem sedan mars 20007 896 inlägg
#11

SPiN. :)

Men jag besöker aldrig forumet där, orkar bara med ett forum... ;)

Medlem sedan dec. 200012 464 inlägg
#12

SPiN

2. Ja, alt.2 är snabbare.

Det tror jag inte på

Medlem sedan mars 20007 896 inlägg
#13

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. :)

Medlem sedan dec. 200012 464 inlägg
#14

Jag vet inte om han menade att listan i fall 2 innehöll alla kolumner i tabellen. Det var det fallet jag tänkte på och då har det ingen betydelse.

Däremot om det inte är alla kolumner så är det ju som du säger.

141 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)