Hallo,

Ik ben geloof ik wel is tegengekomen dat in de config.php het volgende staat (voorbeeld!)

<?php

$sitenaam = "Machiel";     // Jou websitenaam

?>


En dat als je dan iets weer van $sitenaam in je php bestand typt dat er dan Machiel komt te staan.

Alleen dat is dus hetgene waar ik vastloop, wat moet ik neerzetten om $sitenaam (Machiel) te laten zien?

Mvg.
Ah, die speciale characters. Hmmm, ik meen toch ooit gelezen te hebben dat enkele quotes niet door de parser gaan. Is dat dan veranderd?

Nee, dat is een fabel. Als je bijv. dit hebt:
<?php
$a = 'Foo doesn\'t exists';
?>
En het wordt
Foo doesn't exists

Dan moet er toch iets door een parser zijn gegaan:
                          +------------+
                          |            |
'Foo doesn\'t exists' --> | PHP parser | --> T_CONSTANT_ENCAPSED_STRING
                          |            |            ||
                          +------------+            \/
                                             +---------------+
                                             | Single string |
                                             |     parser    | --> Foo doesn't exists
                                             +---------------+

Deze parser zou welliswaar iets sneller moeten zijn dan de double string parser die ook nog eens variabele en speciale characters moet parser, maar in praktijk is dat niet merkbaar door de, zoals al eerder gezegd, erg geoptimaliseerde double string parser.

Sterker nog, PHP herkent al of er variabele of speciale characters in de string staan en zo niet wordt die hele parser overgeslagen en wordt de string behandeld als een T_CONSTANT_ENCAPSED_STRING zowel dan wordt het behandeld als een T_ENCAPSED_AND_WHITESPACE (variabelen) en/of T_STRING.
Aha, oké. Maar hoe kom je aan deze informatie?
@ozzie en wouter,

hebben jullie mijn voorbeeld ook gezien?

variabelen tussen enkele quotes worden niet geparsed.

iig niet in mijn php 5.2
Frank, ja. Waar spreek ik dat tegen?

Ozzie, dit komt door deels logisch redeneren en deels door de broncode van PHP te snappen.
Frank Nietbelangrijk op 07/10/2012 01:07:45

@ozzie en wouter,

hebben jullie mijn voorbeeld ook gezien?

variabelen tussen enkele quotes worden niet geparsed.

iig niet in mijn php 5.2

Frank zie mijn post van 06/10/2012 19:54:45 waarin ik reeds schrijf:

Ozzie PHP op 06/10/2012 19:54:45

Dubbele quotes heeft niets met html te maken zoals Reshad al zegt. Een voordeel is dat je niet hoeft te escapen en daarnaast is het in theorie sneller omdat de string niet wordt gecontroleerd op mogelijke variabelen.


@Wouter: oké :-)
(kun je die uitleg van de broncode ergens terugvinden?)
Wouter en Ozzie,

Ik had het blijkbaar anders gelezen. :o

groet,
Frank
ik zou met defines werken om dit te bereiken, is heel wat netter en kunnen niet (per ongeluk) overschreven worden.
Jaron, dit noemen we constants. Define is slechts de lelijke manier waarop we in PHP constanten moeten instellen.
Wouter J op 07/10/2012 14:33:05

Jaron, dit noemen we constants. Define is slechts de lelijke manier waarop we in PHP constanten moeten instellen.


Until PHP 5.3, const could not be used in the global scope. You could only use this from within a class. This should be used when you want to set some kind of constant option or setting that pertains to that class. Or maybe you want to create some kind of enum.

define can be used for the same purpose, but it can only be used in the global scope. It should only be used for global settings that affect the entire application.
Nogmaals, die dingen heten constants:
<?php
// constants
E_ALL;
E_WARNING;
E_STRICT;
DIRECTORY_SEPARATOR;

// 'magic' constants
__FILE__;
__CLASS__;

// eigen constants
FOO;
BAR;
?>

Om de laatste 2 constants te maken, de rest zit al standaard in PHP, heb je de functie [php]define[/php] nodig:
<?php
define('FOO', 'bar');
define('BAR', 'baz');
?>
Maar die dingen heten constants en geen defines.

En ook nogmaals, de manier waarop we in PHP variabelen en constants definiëren is niet helemaal geweldig. Beter is de manier in JAVA (even omgezet naar geen OO):
<?php
string bar = 'foo';
int foo = 1;
const BAZ = 'hello world';
?>

Reageren