とりあえず文法の羅列

<?php
    //大文字/小文字の区別はない(以下の3行は同様)
    echo("hoge");
    Echo("hoge");
    ECHO("hoge");
    
    //変数($スタートで大文字/小文字が区別される)
    $hoge = "hogehoge";
    
    //定数
    define("PIYO", "piyo");
    PIYO;
    
    //文字列
    //シングルクォート
    'hogehoge';
    //ダブルクォート(変数展開とエスケープシーケンスが使える)
    "piyo $hoge \n";  //=> piyo hogehoge (改行)
    
    //可変変数
    $foo = "bar";
    $$foo = "12345";//$barの値が"12345"となる
    
    //変数への参照
    $foo =& $bar;
    
    //変数のスコープ
    $global_abc;//グローバルスコープ
    function f() {
      global $global_abc;//グローバル変数にアクセスするにはglobalキーワードを使う
      $abc;//(関数内で宣言した変数はローカルスコープ)
      static $static_abc;//スタティック変数
    }
    
    //関数
    function function_name() {
    }
    
    //パラメータの参照渡し
    function f(&$value) {
    }
    
    //パラメータのデフォルト値設定
    function f($value = "abc") {
    }
    
    //可変パラメータ
    function f() {
      $array = func_get_args();//パラメータ配列
      $len   = func_num_args();//パラメータの数
      $value = func_get_arg(1);//引数で渡したインデックスのパラメータ
    }
    
    //可変関数
    function f1(){}
    function f2(){}
    
    $func = "f1";
    $func();//f1が呼び出される
    
    //無名関数
    $lambda = create_function('$value1, $value2', 'return $value1');
    
    //配列
    $array[0] = "hoge0";
    $array[1] = "hoge1";
    $array[2] = "hoge2";
    $array[2]//インデックスの2番目
    //末尾に追加
    $array[] = "hoge3";
    
    
    //連想配列もできる
    $array['a'] = "hoge_a";
    $array['b'] = "hoge_b";
    $array['c'] = "hoge_c";
    //array()を使って書くと
    $array = array('a' => 'hoge_a', 
                   'b' => 'hoge_b',
                   'c' => 'hoge_c');
    
    //length取得
    $len = count($array);
    
    
    //クラス
    class Class_Name {
      const CONST_VALUE = "";//定数
      var $value = "";//プロパティ
      function Class_Name(){//コンストラクタ
      }
      //コンストラクタはこっちでやるほうがいい?
      function __construct() {
      }
      function get_value(){
        return $this -> value;
      }
      
      //デストラクタ
      function __destruct(){
      }
    }
    //クラスの呼び出し
    $instance = new Class_Name();
    //メソッドの呼び出し
    $value = $instance -> get_value();
    //スタティックメソッドの呼び出し
    Class_Name::method();
    
    //継承
    class Super_Class {}
    class Sub_Class extends Super_Class {}
    
    //インターフェイス
    interface Interface_Name {
      function method1();
    }
    class Class_Name implements Interface_Name(){
      function method1() {
      }
    }
    
    //抽象クラス
    abstract class Abstract_Class_Name() {}
?>

interfaceやabstractまであるとは思わなかった。
Javascriptperlがごっちゃになった感じだ。
スタティックメソッドと普通のメソッドの宣言に違いがあるのかとか
スタティッククラスってあるのかとか、どの時点で変数の宣言になるのか
気になるとこはいろいろあるな。