diff options
| author | C. Bess <cbess@company.com> | 2015-11-09 17:55:53 -0600 | 
|---|---|---|
| committer | C. Bess <cbess@company.com> | 2015-11-09 17:55:53 -0600 | 
| commit | df0992d72c2a28f140e6ff9681c505f36e19249a (patch) | |
| tree | 508aa3abe4c25b957dca442560d9c95c9b1fc97a /php.html.markdown | |
| parent | afc5ea14654e0e9cd11c7ef1b672639d12418bad (diff) | |
| parent | c460e1fafa0e9b4edc6a5cb35b970bb5cc030a81 (diff) | |
Merge remote-tracking branch 'adambard/master'
Conflicts:
	swift.html.markdown
Diffstat (limited to 'php.html.markdown')
| -rw-r--r-- | php.html.markdown | 162 | 
1 files changed, 146 insertions, 16 deletions
| diff --git a/php.html.markdown b/php.html.markdown index 039288a0..0504ced2 100644 --- a/php.html.markdown +++ b/php.html.markdown @@ -12,7 +12,7 @@ This document describes PHP 5+.  <?php // PHP code must be enclosed with <?php tags  // If your php file only contains PHP code, it is best practice -// to omit the php closing tag. +// to omit the php closing tag to prevent accidental output.  // Two forward slashes start a one-line comment. @@ -60,7 +60,7 @@ $float = 1.2e3;  $float = 7E-10;  // Delete variable -unset($int1) +unset($int1);  // Arithmetic  $sum        = 1 + 1; // 2 @@ -103,6 +103,9 @@ END;  // String concatenation is done with .  echo 'This string ' . 'is concatenated'; +// Strings can be passed in as parameters to echo +echo 'Multiple', 'Parameters', 'Valid';  // Returns 'MultipleParametersValid' +  /********************************   * Constants @@ -115,8 +118,10 @@ echo 'This string ' . 'is concatenated';  // followed by any number of letters, numbers, or underscores.  define("FOO",     "something"); -// access to a constant is possible by direct using the choosen name -echo 'This outputs '.FOO; +// access to a constant is possible by calling the choosen name without a $ +echo FOO; // Returns 'something' +echo 'This outputs '.FOO;  // Returns 'This ouputs something' +  /******************************** @@ -141,6 +146,8 @@ echo $array[0]; // => "One"  // Add an element to the end of an array  $array[] = 'Four'; +// or +array_push($array, 'Five');  // Remove element from array  unset($array[3]); @@ -155,9 +162,9 @@ echo('Hello World!');  print('Hello World!'); // The same as echo -// echo is actually a language construct, so you can drop the parentheses. +// echo and print are language constructs too, so you can drop the parentheses  echo 'Hello World!'; -print 'Hello World!'; // So is print +print 'Hello World!';  $paragraph = 'paragraph'; @@ -215,6 +222,18 @@ assert($a !== $d);  assert(1 === '1');  assert(1 !== '1'); +// 'Spaceship' operator (since PHP 7) +// Returns 0 if values on either side are equal +// Returns 1 if value on the left is greater +// Returns -1 if the value on the right is greater + +$a = 100; +$b = 1000; + +echo $a <=> $a; // 0 since they are equal +echo $a <=> $b; // -1 since $a < $b +echo $b <=> $a; // 1 since $b > $a +  // Variables can be converted between types, depending on their usage.  $integer = 1; @@ -264,6 +283,18 @@ if (false) {  // ternary operator  print (false ? 'Does not get printed' : 'Does'); +// ternary shortcut operator since PHP 5.3 +// equivalent of "$x ? $x : 'Does'"" +$x = false; +print($x ?: 'Does'); + +// null coalesce operator since php 7 +$a = null; +$b = 'Does print'; +echo $a ?? 'a is not set'; // prints 'a is not set' +echo $b ?? 'b is not set'; // prints 'Does print' + +  $x = 0;  if ($x === '0') {      print 'Does not print'; @@ -359,7 +390,7 @@ for ($i = 0; $i < 5; $i++) {  // Define a function with "function":  function my_function () { -  return 'Hello'; +    return 'Hello';  }  echo my_function(); // => "Hello" @@ -368,8 +399,8 @@ echo my_function(); // => "Hello"  // number of letters, numbers, or underscores.  function add ($x, $y = 1) { // $y is optional and defaults to 1 -  $result = $x + $y; -  return $result; +    $result = $x + $y; +    return $result;  }  echo add(4); // => 5 @@ -380,21 +411,21 @@ echo add(4, 2); // => 6  // Since PHP 5.3 you can declare anonymous functions;  $inc = function ($x) { -  return $x + 1; +    return $x + 1;  };  echo $inc(2); // => 3  function foo ($x, $y, $z) { -  echo "$x - $y - $z"; +    echo "$x - $y - $z";  }  // Functions can return functions  function bar ($x, $y) { -  // Use 'use' to bring in outside variables -  return function ($z) use ($x, $y) { -    foo($x, $y, $z); -  }; +    // Use 'use' to bring in outside variables +    return function ($z) use ($x, $y) { +        foo($x, $y, $z); +    };  }  $bar = bar('A', 'B'); @@ -406,6 +437,31 @@ echo $function_name(1, 2); // => 3  // Useful for programatically determining which function to run.  // Or, use call_user_func(callable $callback [, $parameter [, ... ]]); + +// You can get the all the parameters passed to a function +function parameters() { +    $numargs = func_num_args(); +    if ($numargs > 0) { +        echo func_get_arg(0) . ' | '; +    } +    $args_array = func_get_args(); +    foreach ($args_array as $key => $arg) { +        echo $key . ' - ' . $arg . ' | '; +    } +} + +parameters('Hello', 'World'); // Hello | 0 - Hello | 1 - World | + +// Since PHP 5.6 you can get a variable number of arguments +function variable($word, ...$list) { +	echo $word . " || "; +	foreach ($list as $item) { +		echo $item . ' | '; +	} +} + +variable("Separate", "Hello", "World") // Separate || Hello | World |  +  /********************************   * Includes   */ @@ -487,7 +543,7 @@ class MyClass   * Declaring class properties or methods as static makes them accessible without   * needing an instantiation of the class. A property declared as static can not   * be accessed with an instantiated class object (though a static method can). -*/ + */      public static function myStaticMethod()      { @@ -495,7 +551,9 @@ class MyClass      }  } +// Class constants can always be accessed statically  echo MyClass::MY_CONST;    // Outputs 'value'; +  echo MyClass::$staticVar;  // Outputs 'static';  MyClass::myStaticMethod(); // Outputs 'I am static'; @@ -671,8 +729,80 @@ use My\Namespace as SomeOtherNamespace;  $cls = new SomeOtherNamespace\MyClass(); + +/********************** +* Late Static Binding +*  */ +class ParentClass { +    public static function who() { +        echo "I'm a " . __CLASS__ . "\n"; +    } +    public static function test() { +        // self references the class the method is defined within +        self::who(); +        // static references the class the method was invoked on +        static::who(); +    } +} + +ParentClass::test(); +/* +I'm a ParentClass +I'm a ParentClass +*/ + +class ChildClass extends ParentClass { +    public static function who() { +        echo "But I'm " . __CLASS__ . "\n"; +    } +} + +ChildClass::test(); +/* +I'm a ParentClass +But I'm ChildClass +*/ + + +/********************** +*  Error Handling +*   +*/ + +// Simple error handling can be done with try catch block + +try { +    // Do something +} catch (Exception $e) { +    // Handle exception +} + +// When using try catch blocks in a namespaced enviroment use the following + +try { +    // Do something +} catch (\Exception $e) { +    // Handle exception +} + +// Custom exceptions + +class MyException extends Exception {} + +try { + +    $condition = true; + +    if ($condition) { +        throw new MyException('Something just happend'); +    } + +} catch (MyException $e) { +    // Handle my exception +} +  ```  ## More Information | 
