Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[PL] Jak NIE zostać "programistą" PHP?

Radek Benkel
December 18, 2011

[PL] Jak NIE zostać "programistą" PHP?

Radek Benkel

December 18, 2011
Tweet

More Decks by Radek Benkel

Other Decks in Technology

Transcript

  1. O MNIE Radosław Benkel - singles PHP - 2007 SQL

    - 2007 JavaScript -2008 Projekty: DELIRIUM, GENOSIS, inne
  2. WYŚWIETLANIE BŁĘDÓW php.ini error_reporting = E_ALL | E_STRICT display_errors =

    On *.php <?php error_reporting(E_ALL | E_STRICT) ini_set('display_errors', 'On')
  3. WYŚWIETLANIE BŁĘDÓW php.ini error_reporting = E_ALL | E_STRICT display_errors =

    On *.php <?php error_reporting(E_ALL | E_STRICT) ini_set('display_errors', 'On') .htaccess php_flag display_errors on php_value error_reporting 32767
  4. INNE DYREKTYWY PHP.INI <?php //register_globals = On $title // 'Foo'

    $_GET['title'] // 'Foo' //register_globals = Off $title // undefined $_GET['title'] // 'Foo' http://www.example.com/find.php?title=Foo
  5. FILTROWANIE WEJŚCIA I WYJŚCIA <?php $search_html = filter_input( INPUT_GET, 'foo',

    FILTER_SANITIZE_SPECIAL_CHARS ); WEJŚCIE: WYJŚCIE: <?php echo htmlspecialchars($foo, ENT_NOQUOTES);
  6. PDO <?php //PDO try { $db = new PDO('mysql:host=hostname:dbname=some', 'username',

    'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF-8'); } catch (PDOException $e) { die($e->getMessage()); } $query = 'SELECT * FROM my_table WHERE cat_id = :id AND title = :title'; $stmt = $db->prepare($query); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->bindValue(':title', $myTitle, PDO::PARAM_STR, 12); $stmt->execute(); while($row = $stmt->fetch(PDO::FETCH_OBJ)) { // .. }
  7. PARAMETRY FUNKCJI A REFERENCJA <?php function change($a, $o) { $a['foo']

    = 2; $o->bar = 2; } $arr = array('foo' => 1); $obj = new stdClass(); $obj->$bar = 1; change($arr, $obj); echo $arr['foo']; //displays 1 echo $obj->bar; //displays 2
  8. AUTOLOADING <?php function __autoload($name) { if (file_exists($name . '.php')) {

    require_once($name. '.php'); } } $a = new Foo(); //autoload file Foo.php from current directory
  9. FOR => FOREACH <?php //DONT DO THAT! for ($i =

    0; $o < count($names); $i++) { $name['surname'] = mysql_query("SELECT surname FROM surnames WHERE name '{$names[i]}'"); } $names = array( 'John' => 'Doe', 'Chuck' => 'Norris' ); foreach ($names as $lastName) { echo $lastName, "\n"; } foreach ($names as $firstName => $lastName) { echo $firstName . ':' . $lastName; }
  10. == VS === // "===" MEANS THAT THEY ARE IDENTICAL

    // "==" MEANS THAT THEY ARE EQUAL // "!=" MEANS THAT THEY AREN'T EQUAL. FALSE NULL ARRAY() 0 "0" 0X0 "0X0" "000" "0000" FALSE === == == == == == != != != NULL == === == == != == != != != ARRAY() == == === != != != != != != 0 == == != === == === == == == "0" == != != == === == == == == 0X0 == == != === == === == == == "0X0" != != != == == == === == == "000" != != != == == == == === == "0000" != != != == == == == == === HTTP://STACKOVERFLOW.COM/QUESTIONS/80646/HOW- DO-THE-EQUALITY-DOUBLE-EQUALS-AND-IDENTITY- TRIPLE-EQUALS-COMPARISO
  11. VARIABLE VARIABLES // variable variables class Some { public function

    foo() { return "Hello World"; } } $foo = 'Hello World'; $bar = 'foo'; echo $$bar; //displays 'Hello World' $obj = new Some(); echo $obj->$foo(); //displays Hello World //much better! call_user_func(array($obj, $foo)); call_user_func(array('Some', $foo));
  12. STRINGI (W PHP;-) <?php $ex1 = 'Value of var foo

    is $foo'; $ex2 = "Value of var foo is $foo"; $ex3 = <<<HD Value of foo is $foo HD; $ex4 = <<<'ND' Value of foo is $foo 'ND'; echo $ex1 . "\n"; // Value of var foo is $foo echo $ex2 . "\n"; // Value of var foo is bar echo $ex3 . "\n"; // Value of var foo is bar echo $ex4 . "\n"; // Value of var foo is $foo
  13. MAGIA W PHP __construct __destruct __call __callStatic __get __set __isset

    __unset __sleep __wakeup __toString __invoke __set_state __clone
  14. MAGIA W PHP <?php class Foo { private $_properties =

    array( 'foo' => 123, 'bar' => 456 ); public function __get($var) { if (!array_key_exists($var, $this->_properties)) { return null; } return $this->_properties[$var]; } public function __set($var, $value) { if (!array_key_exists($var, $this->_properties)) { throw new Exception('You cannot set that property'); } else { $this->_properties[$var] = $value; } } } $obj = new Foo(); $obj->foo; //gives 123 $obj->nonExists; //throws Exception
  15. RETURN <?php function foo() { return 'Hello World'; } function

    bar() { echo 'Hello World'; } echo foo(); // Hello World <- GOOD bar(); // Hello World <- BAD
  16. ?>

  17. JAK PISAĆ KOD? "PISZ KOD TAK, JAKBY OSOBA, KTÓRA GO

    PO TOBIE PRZEJMIE, BYŁA UZBROJONYM PSYCHOPATĄ ZNAJĄCYM TWÓJ ADRES"