[PHP] Algemene code stijl vragen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik vraag me al een tijdje af wat het verschil is tussen de extensie .php en .php4? Zelf had ik gedacht dat .php bestanden altijd worden gerund op base van de huidige versie van php op de server en dat .php4 extensies worden gerund op basis van php versie 4. Een voorbeeld: stel je hebt in php een functie gemaakt str_ireplace(). Deze functie is niet beschikbaar in php versie 4 maar wel in 5. Voorkom je nu problemen als je de php file waarin deze functie staat de extensie .php4 geeft als in de toekomst je server upgrade naar php versie 5?

De volgende vraag heeft betrekking op hoe je het beste verbinding maakt met een mysql database. Als ik een website heb waarbij meerdere pagina's verbinding maken met een mysql database dan doe ik dat nu door bovenaan de pagina een database.php pagina te include welke een functie heeft connect_to_database(). In die functie maak ik dan contact met de mysql database en dan kan ik vervolgens in de oorspronkelijke pagina gewoon queries uitvoeren. Dit lijkt me echter niet echt netjes aangezien normaal variablen na het aflopen van een functie worden opgeruimd. Alleen nu sluit ik de verbinding naar de mysql database express hier niet af en daarom blijft dit werken. Is het niet beter om via een classe verbinding te maken met een database? Of weet iemand nog een betere manier?

Ik heb proberen te zoeken op google naar antwoorden maar ik heb niks kunnen vinden.

Bedankt voor de hulp. :)

Oja.. normaal vind je alles over de juiste stijl op pear.php.net alleen ik vind hierover niks op die website??

[ Voor 3% gewijzigd door Verwijderd op 12-09-2006 10:02 ]


Acties:
  • 0 Henk 'm!

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 16-09 20:54
Wat betreft je eerste vraag kun je je legacy functies op deze manier opbouwen:
PHP:
1
2
3
4
if(!function_exists('str_ireplace')) {
    function str_ireplace() {
    }
}

Don't be afraid of the dark, be afraid of what it hides


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MichelVH schreef op dinsdag 12 september 2006 @ 10:05:
Wat betreft je eerste vraag kun je je legacy functies op deze manier opbouwen:
PHP:
1
2
3
4
if(!function_exists('str_ireplace')) {
    function str_ireplace() {
    }
}
Ja dat is precies wat ik nu doe. Alleen mijn vraag is of die extensie dat probleem niet ook oplost?

Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 21:27

Reinier

\o/

De extensie lost dat probleem niet op.

Acties:
  • 0 Henk 'm!

Verwijderd

Er zijn geen (directe) verschillen in de extensies. Bestanden met .php4 zullen niet automatisch door PHP4 uitgevoerd worden, en .php niet door de nieuwste versie. Dit kan wel ingesteld worden in de config files van de webserver. Deze problemen kun je dus niet automatisch voorkomen, wel kan je PHP4 en 5 op één server installeren, en in bijvoorbeeld apache.conf aangeven dat de extensie .php4 door PHP4 uitgevoerd moet worden, en .php door PHP5.

Over verbinding maken met een database moet voldoende informatie te vinden zijn op google. Ook ligt het denk ik persoonlijk. Ik gebruik veelal een Database class welke verbinding maakt met de desgewenste database.

Acties:
  • 0 Henk 'm!

  • Chesta
  • Registratie: November 2004
  • Laatst online: 27-08 06:55
de extensie kan volgens mij soms bepalen door welke parser het word geparsed, dit is afhankelijk van de configuratie van de server. Bij lycos is dat iig zo, als je .php gebruikt word het geparsed door php4, en als je .php5 gebruikt word het door php5 geparsed :)

End of Transmission


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op dinsdag 12 september 2006 @ 10:08:
Er zijn geen (directe) verschillen in de extensies. Bestanden met .php4 zullen niet automatisch door PHP4 uitgevoerd worden, en .php niet door de nieuwste versie. Dit kan wel ingesteld worden in de config files van de webserver. Deze problemen kun je dus niet automatisch voorkomen, wel kan je PHP4 en 5 op één server installeren, en in bijvoorbeeld apache.conf aangeven dat de extensie .php4 door PHP4 uitgevoerd moet worden, en .php door PHP5.

Over verbinding maken met een database moet voldoende informatie te vinden zijn op google. Ook ligt het denk ik persoonlijk. Ik gebruik veelal een Database class welke verbinding maakt met de desgewenste database.
Er is ook genoeg informatie te vinden over het maken van een verbinding met een database. Mijn vraag was dan ook niet hoe dit moet maar welke manier het beste is. :) Daar is weinig over te vinden. Wat was het originele idee van php om verbinding te maken, via een classe of via functies? Of zijn er nog betere?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Het hernoemen van de extensie is enkel een truckje om er voor te zorgen dat apache het onderscheid kan maken. In de httpd.conf bind je dan .php4 aan de php4 module en php aan de php5 module. Dit vereist extra configuratie en afspraken aangezien je ook af kunt spreken (en in kunt stellen) dat bestanden met een '.oudephp' extentie door de php4 module afgehandeld worden ( en '.nogouderphp' door php3 ;) )

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als je niet zelf de verbinding naar MySQL afsluit met mysql_close(), gebeurd dat na het afopen van je script automatisch.
http://nl3.php.net/mysql_close
Het gebruik van mysql_close() is normaal niet nodig, omdat niet-persisente open links automatisch gesloten worden aan het eind van het script.
Dat is zo vanuit je globale scope, vanuit functies als ook vanuit classes.
Bij intens database gebruik kun je een wel-presisente verbinding maken (zie mysql_pconnect) maar ook hier blijft de verbinding tussen je script en de database niet letterlijk open staan, maar wordt de verbinding gepooled.

[ Voor 37% gewijzigd door frickY op 12-09-2006 10:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op dinsdag 12 september 2006 @ 10:11:
Het hernoemen van de extensie is enkel een truckje om er voor te zorgen dat apache het onderscheid kan maken. In de httpd.conf bind je dan .php4 aan de php4 module en php aan de php5 module. Dit vereist extra configuratie en afspraken aangezien je ook af kunt spreken (en in kunt stellen) dat bestanden met een '.oudephp' extentie door de php4 module afgehandeld worden ( en '.nogouderphp' door php3 ;) )
Okeej bedankt voor de uitleg :) . Maar het is dus wel beter om code die echt bedoeld is voor versie 4 de extensie .php4 te geven mits je server dit ondersteunt?

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Nee, dat maakt niets uit. Meer dan een extesnie is het niet.
Puur voor PHP4 geschreven code zal in het merenddeel van de gevallen probleemloos onder PHP5 draaien.

In PHP5 specifieke code kun je ofwel afvangen dat het script op PHP4 wordt gedraaid en exit()-en, ofwel alle functies die je nodig hebt handmatig definiëren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
frickY schreef op dinsdag 12 september 2006 @ 10:13:
Als je niet zelf de verbinding naar MySQL afsluit met mysql_close(), gebeurd dat na het afopen van je script automatisch.

[...]


Dat is zo vanuit je globale scope, vanuit functies als ook vanuit classes.
Bij intens database gebruik kun je een wel-presisente verbinding maken (zie mysql_pconnect) maar ook hier blijft de verbinding tussen je script en de database niet letterlijk open staan, maar wordt de verbinding gepooled.
Dat van die mysql_pconnect wist ik nog niet. Dat is een heel handige functie lees ik. Ik denk dat ik die voortaan ga gebruiken i.p.v de gewone. Dwingt mij tenminste ook om die mysql_close() correct te gebruiken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okeej bedankt voor de tips :).. Ik ga nog eens proberen te zoeken in boeken wat ze daar schrijven over hoe je het beste een mysql verbinding maakt als je dit via een algemeen script wilt doen.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op dinsdag 12 september 2006 @ 10:23:
[...]


Dat van die mysql_pconnect wist ik nog niet. Dat is een heel handige functie lees ik. Ik denk dat ik die voortaan ga gebruiken i.p.v de gewone. Dwingt mij tenminste ook om die mysql_close() correct te gebruiken :)
Anders moet even lezen wat een persistente connectie is; dan begrijp je wellicht waarom bovenstaande zin nogal raar is. Het weglaten van mysql_close() is overigens geen enkel probleem

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had nog een nogal algemene vraag wat betreft PHP.

Tot nu toe heb ik altijd php code en html code gescheiden gehouden bij het maken van websites. Dus de layout van de pagina staat in index.html en de code waarmee ik de pagina vul staat in index.php. De index.php pagina opent vervolgens de html code en m.b.v de str_replace() functie vervang ik dan bepaalde delen in de html code door andere teksten. Mijn vraag is of dit een goede methode is of juist niet. Het risico dat hier aan vast zit is dat gebruikers ook bepaalde syntaxen kunnen gebruiken zoals {!-BLOGS_HERE-!} en dan gaat het natuurlijk mis. Je kunt daar wel op controleren maar is dit wel de meest veilige methode. Het grote voordeel is dat je nu code en stijl apart hebt.
Een alternatief is de php code tussen de html door te gebruiken. Welke methode is het beste? Het liefst onderbouwd met argumenten. :)

Acties:
  • 0 Henk 'm!

  • NLChris
  • Registratie: Juli 2004
  • Laatst online: 20-09 11:41
Ik gebruik zelf een aangepaste versie van: http://www.massassi.com/php/articles/template_engines/

Veel simpelere template engines bestaan er niet. Deze is makkelijk te begrijpen en uit te breiden :)

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Verwijderd schreef op zondag 17 september 2006 @ 15:33:
Ik had nog een nogal algemene vraag wat betreft PHP.

Tot nu toe heb ik altijd php code en html code gescheiden gehouden bij het maken van websites. Dus de layout van de pagina staat in index.html en de code waarmee ik de pagina vul staat in index.php. De index.php pagina opent vervolgens de html code en m.b.v de str_replace() functie vervang ik dan bepaalde delen in de html code door andere teksten. Mijn vraag is of dit een goede methode is of juist niet. Het risico dat hier aan vast zit is dat gebruikers ook bepaalde syntaxen kunnen gebruiken zoals {!-BLOGS_HERE-!} en dan gaat het natuurlijk mis. Je kunt daar wel op controleren maar is dit wel de meest veilige methode. Het grote voordeel is dat je nu code en stijl apart hebt.
Een alternatief is de php code tussen de html door te gebruiken. Welke methode is het beste? Het liefst onderbouwd met argumenten. :)
Over dat onderwerp kun je enorm oude koeien uit de GoT sloot halen. Daar is al zoveel over geroepen de afgelopen jaren, dat het weinig nut heeft om alles nog maar eens een keer op te halen. Duik vanavond, ofzo, eens in de search daar ben in iig wel even zoet mee. Dan kun je voor jezelf bepalen wat in jouw situatie een goede template-manier is.
Pagina: 1