Szőkülök vagy mi? PHP szenvedés rulez...

Elővettem egy kb tavalyi projectem ötletét, leporoltam, átneveztem. Az ok annyi volt, hogy annak idején nem volt mögötte koncepció.
Mostmár van.

Neki is fogtam, ám rögtön az elején el is akadtam.

Három fájlom van jelenleg: metatags.php, config.php, és természetesen az index.php.

config.php:


define ("SITENAME", "Lilly CMS");
define ("KEYWORD", "Kulcsszó!");
define ("DESCRIPTION", "Leírás");
define ("FBADMIN", "XXXXXXXX");
define ("FBAPP_ID", "XXXXXXXXX");

metatags.php:
$metatags=array();

if (!empty(KEYWORD)) {
$metatags[] = "\n";
}

majd az index.php-ben foreach-al behúzom a < /head> előtt (a fájl elején természetesen require_once('metatags.php'); ):

foreach ($metatags as $metatag) {
echo $metatag;
}

De 500 Errort dob, és nem bírok rájönni, mi baja...

Hozzászólások

Ez (a 4-es sor az az if):


metatags.php|4 error| unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM

Tipp: konstanst nem lehet így vizsgálni. Ne így csináld, inkább legyen egy $config array:


$config['sitename'] = "Lilly CMS";
$config['keyword'] = "az";
$config['description'] = "Az az";
$config['fbadmin'] = "FBADMIN";
$config['fbapp_id'] = "FBAPP123456";

Tipp2: egy parancssori PHP-t tessék felrakni a gépre, a vim-ben meg használni a syntastic plugint.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

if(defined(KEYWORD)) {
  // az
}

De a jelenlegi kódban én ezt nem konstansokkal oldanám meg. Nem szép, és nem is erre való.

Nem apache-t mondtam, hanem CLI-s php-t, vagyis a parancssorban legyen olyan parancsod, hogy php. A vim syntastic pluginje ugyanis csak ezen keresztül tudja tesztelni a szintaxis helyességét.

Szerk: ez egy annyira híres probléma, hogy még a Wikipedian is cikkeznek róla.

--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Mi az amit valojaban szeretnel? Nincs igazan ertelme ennek a kerdesnek.

A tomb adott indexenek a tartalmat a echo $tomb['tombelemnev']; kifejezessel tudod kiiratni, de ha a tomb tartalmara vagy kivancsi, akkor a print_r -t tudom ajanlani. De inkabb tedd fel a valodi kerdest.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Helyesen:

if(defined('KEYWORD')) {

Mert a defined() stringet vár, ha te konstanst használnál, akkor:
ha létezik: először behelyettesíti a konstans értékét és egy teljesen másik (jó eséllyel nem létező konstanst fog keresni) -> false
ha nem létezik: átalakítja stringre és elkezdi azt keresni (+1 warning). De mivel ugye nem létezik, ezért false a visszatérési érték.

Szóval ez csak és kizárólag akkor adna vissza true-t, ha pont egy konstans neve.

----------------
Lvl86 Troll

Ha változó lenne, akkor változóként lehetne kezelni. De mivel konstans...

Szóval a helyes megoldás az az, hogy kaptál egy hülye tippet és nem néztél utána, hogy az empty() mit csinál. (Egyébként az empty egy külön állatfaj, lévén, hogy nem függvény, hanem nyelvi elem).

----------------
Lvl86 Troll

Nem ismeri a KEYWORD szót az if()-ben. Legalábbis ahogyan kipróbáltam.

De 500 Errort dob, és nem bírok rájönni, mi baja...

php.ini -be:
error_reporting = E_ALL & ~E_NOTICE
error_logs=On
log_error=/var/log/php-error.log (tudja írni, aki a kódot futtatja)

fejlesztői környezetbe esetleg:
display_errors=On

+1 erre
Miert is kene kikapcsolni a notice-okat? Pl. nem letezo tombindexekre csak notice-t kapsz, pedig elegge fontos lehet.. (ha csak letezo indexet akarsz vizsgalni, arra meg ott az http://php.net/manual/en/function.array-key-exists.php )

--
R2D2 a filmtörténet legmocskosabb szájú karaktere.
Minden szavát kisípolták.

empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!