Nov 19 2008

Povinné parametry funkcí v PHP

Tag: PHPJens @ 00:20

Vždycky jsem si myslel, že pokud není u funkce v PHP definován parametr jeho defaultní hodnotou — function Foo($a = ''){} — bere se, že je parametr povinný. Moje chyba, PHP mě opět vypeklo a přitom v tak elementární věci.

Mějme příklad:

<?php
function Bar($stuf)
{
	echo $stuf;
}
Bar();

výsledek:

Warning: Missing argument 1 for Bar(), called in /var/www/error.php on line 6 and defined in /var/www/error.php on line 2
Notice: Undefined variable: stuf in /var/www/error.php on line 4

Výstup mě nemile překvapil, nejen že volání funkce nepadne na Fatal Error ale navíc se tělo funkce provede s nedefinovanou hodnotou proměnné $stuf. Asi bude třeba na každý parametr volat isset(...). Jak geniální. Zdá se že povinné parametry v PHP neexistují.

Myslím že krása PHP spočívá právě v jeho nevyzpytatelnosti ;) Takže zkusme ještě podobný příklad, s určením typu „nepovinného“ parametru:

<?php
function Bar(array $stuf)
{
	echo $stuf;
}
Bar();

Výsledek je pak zcela logicky a jasně odvoditelný (!?!):

Catchable fatal error: Argument 1 passed to Bar() must be an array, none given, called in /var/www/error.php on line 6 and defined in /var/www/error.php on line 2

A proto v PHP rád programuji … spousty let a stále se učím základům :))
Vyzkoušeno na PHP 5.2.6.


Nov 17 2008

Vyšel Zend Framework 1.7.0

Tag: Zend Framework,ZprávičkyJens @ 23:30

Dnes, tedy 17.11.2008 vyšel nový „stabilní“ Zend Framework.

V oficiální zprávičce si můžete přečíst všechna nová rozšíření a vylepšení, zdá se že je toho docela dost a proto bych doporučoval s upgradem ještě chvíli počkat, než si to sedne a vychytají se mouchy :)

Co mě zaujalo z výčtu novinek/změn nejvíce:

  • Výkonnostní vylepšení v Zend_Loader, Zend_Controller
  • Zend_Config_Writer
  • File transfer enhancements

Více viz již zmíněné oznámení o vydání ZF 1.7.0.


Nov 11 2008

Přesměrování STDERR na STDOUT

Tag: LinuxJens @ 23:00

V linuxu je třeba mnohdy přesměrovat chybový výstup stderr na standardní výstup stdout – a to celé pak ideálně poslat do /dev/null :) Toto se může hodit například při spouštění různých cronů. Pokud by totiž skript generoval nějaký výstup (stderr nebo stdout), cron daemon ho pošle uživateli jako „varovný email“, že něco nemusí být v pořádku.

$ skript.sh 2>&1 >/dev/null

Tento zápis tedy zajistí, že stderr(2) se přesměruje na stdout(1) a to se přesměruje na /dev/null.

Více viz


Nov 01 2008

Screenshot stránky z příkazové řádky v Linuxu

Tag: Linux,WebJens @ 23:00

Jak vytvořit screenshot nebo náhled nějaké webové stránky? Navíc na serveru, v Linuxu a z příkazové řádky? Určitě existuje mnoho způsobů – ať už použití externí on-line aplikace, speciálního programu či utility nebo převod HTML do obrázku …

Já zde popíšu metodu, která využívá vámi preferovaný prohlížeč instalovaný na serveru (ja vybral Firefox — na Debianu iceweasel) a v kombinaci s VNC serverem jednoduše típnu obrazovku pomocí utility import.

Pokračování článku…