Webexpo 2009 – eshop- změny
- bojovyletoun
- Člen | 667
ahoj, právě jsem se díval na to video z webexpa2009– eshop- banán, meloun.kiwi…
Akorát mě zajímá,
jak upravit klasický případ- uložení neinicalizované proměnné, protože
ten způsob z přednášky se mi zdál špatný (3 krát opakování). Není
jednodušší upřednostnit jednoduchost a dát tam @ před přiřazení?
function handleAdd($fruit){
$session=$this->getSession('cart');
if(isset($session->quantitity[$fruit])){
$session->quantity[$fruit]++;
}else{
$session->quantity[$fruit]=1;}
}
nestačilo by
function handleAdd($fruit){
$session=$this->getSession('cart');
@$session->quantity[$fruit]++;
}
neberte to jako nějaké vytýkání nebo něco takového, ale jako hledání nejlepšího způsobu, jak tuto situaci naprogramovat.
- Vyki
- Člen | 388
Jediné co by se na tom dalo kosmeticky upravi je
<?php
function handleAdd($fruit){
$session=$this->getSession('cart');
if(!isset($session->quantitity[$fruit]))
$session->quantity[$fruit]=0;
$session->quantity[$fruit]++;
}
?>
ale samozrějmě je úplně v pořádku kontrola neinicializované proměnné. PHP ti to sice dovolí, ale v Nette je to ošetřeno tak, aby to na tebe zařvalo když se snažíš přistoupit k něčemu neiinicializovanému. V jiných programovacích jazycích je to ve výchozím nastavení – to upozornění na neiinicializovanou proměnnou.
Jinak @ se používá opravdu jen ve vyjíměčných situacích, např. u funkcí pro manipulaci adresáři a soubory.
Editoval Vyki (7. 11. 2010 19:54)
- h4kuna
- Backer | 740
Zrovinka dneska jsem řešil něco podobného nebylo to se session, ale s normalní proměnnou. Taky by mě to zajímalo.
Můj názor
v tomto případě tam proběhne php magie :D
<?php
@$session->quantity[$fruit]++;
?>
- kdy on to musi inicializovat jako int
- a potom inkrementovat
a tady se na php nespoleháš a víš co se děje
<?php
if(isset($session->quantitity[$fruit])){
$session->quantity[$fruit]++;
}else{
$session->quantity[$fruit]=1;}
?>
taky se řídím pravidlem @ dávat minimálně