Archív pre kategóriu ‘Otázky na pohovor’

1. s podmienkou na začiatku:

while(vyraz){
  prikazy;
}

Alternatívny zápis:

while(vyraz):
  prikazy;
endwhile;

2. s podmienkou na konci:

do {
prikaz;
} while(vyraz);

Nemá alternatívnu syntax.

3. s presným počtom opakovaní:

for(init;podm;iteracia) {
  prikazy;
}

Alternatívny zápis:

for(init;podm;iteracia):
  prikazy;
endfor;

4. špeciálny cyklus pre prechádzanie polí

foreach($pole as $index => $hodnota) {
  prikazy;
}

kde sekcia $index => môže byť vynechaná, čiže bude len:

foreach($pole as $hodnota) {
  prikazy;
}

1. Jednoduché vetvenie:

if (vyraz) {
  prikazy1;
} else {
  prikazy2;
}

Alternatívny zápis:

if (vyraz):
  prikazy1;
else:
  prikazy2;
endif;

2. Viacnásobné vetvenie:

if (vyraz1) {
  prikazy1;
}
elseif (vyraz2) {
  prikazy2;
}
elseif (vyraz3) {
  prikazy3;
}
else{
  prikazy4;
}

Aternatívny zápis:

if (vyraz1) :
  prikazy1;
elseif (vyraz2):
  prikazy2;
elseif (vyraz3):
  prikazy3;
else:
  prikazy4;
endif;

Rovnaký efekt sa dá dosiahnuť aj pomocou switch.

switch (vyraz) {
  case hodnota1:
    prikazy;
    break;
  case hodnota2:
    prikazy2;
    break;
  case hodnota3:
    prikazy3;
    break;
  default:
    prikazy4;
}

Alternatívny zápis:

switch (vyraz):
  case hodnota1:
   prikazy;
   break;
case hodnota2:
   prikazy2;
   break;
case hodnota3:
   prikazy3;
   break;
default:
   prikazy_4;
endswitch;

Typy platnosti premenných:
- lokálne
- globálne
- superglobálne
- statické

1. Jednoriadkové:

//komentar
#komentar

2. Viacriadkové:

/*
komentar
*/

Jedná sa o tzv. Error Control Operator, ktorý potláča generovanie chybových správ. Viac na php.net

Príklad:

<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");
 
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>

Veľkosť písmen sa v PHP nerozlišuje, okrem názvu premenných. Teda premenné $var a $VAR sú dve rôzne. Avšak nezáleží na tom, či funkciu voláte ako strtolower alebo StrToLower.

Vo všeobecnosti parent::constructorParentName(), kde constructorParentName je názov konštruktora predka.

Príklad:

<?php
 
class p {
 
    function p() {
        print "Parent's constructor\n";
    }
 
    function p_test() {
        print "p_test()\n";
        $this->c_test();
    }
}
 
class c extends p {
 
    function c() {
        print "Child's constructor\n";
        parent::p();
    }
 
    function c_test() {
        print "c_test()\n";
    }
}
 
$obj = new c;
$obj->p_test();
 
?>

Výstup:

Child's constructor
Parent's constructor
p_test()
c_test()

Toto funguje aj v PHP 4. V PHP 5 bola pridaný konštruktor ako __construct – výhodou je, že nemusíte vedieť potom názov konštruktora predka, ani pri zmene názvu triedy meniť názov konštruktora pre správnu funkcionalitu. Potom vlastne môžete volať konštruktor predka triedy všeobecne:

parent::__construct()

Pomocou operátora :: môžeme volať statické metódy triedy, čiže tie, ktoré nevyžadujú inicializáciu objektu.

<?php
$a = 5;
$b = 'a';
echo (int)$$b;
?>

Vypíše sa 5. Je to preto, lebo operátor $$ je referenciou na obsah premennej b, čo je v tomto prípade a. Čiže vypíše sa hodnota premennej a.

Slúži na to funkcia func_num_args.

Príklad:

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs\n";
}
 
foo(1, 2, 3);    //outputs: Number of arguments: 3
?>