<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # [X分鐘速成Y](http://learnxinyminutes.com/) ## 其中 Y=PHP 源代碼下載:?[learnphp-zh.php](http://learnxinyminutes.com/docs/files/learnphp-zh.php) 這份教程所使用的版本是 PHP 5+. ~~~ <?php // PHP必須被包圍于 <?php ? > 之中 // 如果你的文件中只有php代碼,那么最好省略結束括號標記 // 這是單行注釋的標志 # 井號也可以,但是//更常見 /* 這是多行注釋 */ // 使用 "echo" 或者 "print" 來輸出信息到標準輸出 print('Hello '); // 輸出 "Hello " 并且沒有換行符 // () 對于echo和print是可選的 echo "World\n"; // 輸出 "World" 并且換行 // (每個語句必須以分號結尾) // 在 <?php 標簽之外的語句都被自動輸出到標準輸出 ?>Hello World Again! <?php /************************************ * 類型與變量 */ // 變量以$開始 // 變量可以以字母或者下劃線開頭,后面可以跟著數字、字母和下劃線 // 布爾值是大小寫無關的 $boolean = true; // 或 TRUE 或 True $boolean = false; // 或 FALSE 或 False // 整型 $int1 = 12; // => 12 $int2 = -12; // => -12 $int3 = 012; // => 10 (0開頭代表八進制數) $int4 = 0x0F; // => 15 (0x開頭代表十六進制數) // 浮點型 (即雙精度浮點型) $float = 1.234; $float = 1.2e3; $float = 7E-10; // 算數運算 $sum = 1 + 1; // 2 $difference = 2 - 1; // 1 $product = 2 * 2; // 4 $quotient = 2 / 1; // 2 // 算數運算的簡寫 $number = 0; $number += 1; // $number 自增1 echo $number++; // 輸出1 (運算后自增) echo ++$number; // 輸出3 (自增后運算) $number /= $float; // 先除后賦值給 $number // 字符串需要被包含在單引號之中 $sgl_quotes = '$String'; // => '$String' // 如果需要在字符串中引用變量,就需要使用雙引號 $dbl_quotes = "This is a $sgl_quotes."; // => 'This is a $String.' // 特殊字符只有在雙引號中有用 $escaped = "This contains a \t tab character."; $unescaped = 'This just contains a slash and a t: \t'; // 可以把變量包含在一對大括號中 $money = "I have $${number} in the bank."; // 自 PHP 5.3 開始, nowdocs 可以被用作多行非計算型字符串 $nowdoc = <<<'END' Multi line string END; // 而Heredocs則可以用作多行計算型字符串 $heredoc = <<<END Multi line $sgl_quotes END; // 字符串需要用 . 來連接 echo 'This string ' . 'is concatenated'; /******************************** * 數組 */ // PHP 中的數組都是關聯型數組,也就是某些語言中的哈希表或字典 // 在所有PHP版本中均適用: $associative = array('One' => 1, 'Two' => 2, 'Three' => 3); // PHP 5.4 中引入了新的語法 $associative = ['One' => 1, 'Two' => 2, 'Three' => 3]; echo $associative['One']; // 輸出 1 // 聲明為列表實際上是給每個值都分配了一個整數鍵(key) $array = ['One', 'Two', 'Three']; echo $array[0]; // => "One" /******************************** * 輸出 */ echo('Hello World!'); // 輸出到標準輸出 // 此時標準輸出就是瀏覽器中的網頁 print('Hello World!'); // 和echo相同 // echo和print實際上也屬于這個語言本身,所以我們省略括號 echo 'Hello World!'; print 'Hello World!'; $paragraph = 'paragraph'; echo 100; // 直接輸出標量 echo $paragraph; // 或者輸出變量 // 如果你配置了短標簽,或者使用5.4.0及以上的版本 // 你就可以使用簡寫的echo語法 ?> <p><?= $paragraph ?></p> <?php $x = 1; $y = 2; $x = $y; // $x 現在和 $y 的值相同 $z = &$y; // $z 現在持有 $y 的引用. 現在更改 $z 的值也會更改 $y 的值,反之亦然 // 但是改變 $y 的值不會改變 $x 的值 echo $x; // => 2 echo $z; // => 2 $y = 0; echo $x; // => 2 echo $z; // => 0 /******************************** * 邏輯 */ $a = 0; $b = '0'; $c = '1'; $d = '1'; // 如果assert的參數為假,就會拋出警告 // 下面的比較都為真,不管它們的類型是否匹配 assert($a == $b); // 相等 assert($c != $a); // 不等 assert($c <> $a); // 另一種不等的表示 assert($a < $c); assert($c > $b); assert($a <= $b); assert($c >= $d); // 下面的比較只有在類型相同、值相同的情況下才為真 assert($c === $d); assert($a !== $d); assert(1 === '1'); assert(1 !== '1'); // 變量可以根據其使用來進行類型轉換 $integer = 1; echo $integer + $integer; // => 2 $string = '1'; echo $string + $string; // => 2 (字符串在此時被轉化為整數) $string = 'one'; echo $string + $string; // => 0 // 輸出0,因為'one'這個字符串無法被轉換為整數 // 類型轉換可以將一個類型視作另一種類型 $boolean = (boolean) 1; // => true $zero = 0; $boolean = (boolean) $zero; // => false // 還有一些專用的函數來進行類型轉換 $integer = 5; $string = strval($integer); $var = null; // 空值 /******************************** * 控制結構 */ if (true) { print 'I get printed'; } if (false) { print 'I don\'t'; } else { print 'I get printed'; } if (false) { print 'Does not get printed'; } elseif(true) { print 'Does'; } // 三目運算符 print (false ? 'Does not get printed' : 'Does'); $x = 0; if ($x === '0') { print 'Does not print'; } elseif($x == '1') { print 'Does not print'; } else { print 'Does print'; } // 下面的語法常用于模板中: ?> <?php if ($x): ?> This is displayed if the test is truthy. <?php else: ?> This is displayed otherwise. <?php endif; ?> <?php // 用switch來實現相同的邏輯 switch ($x) { case '0': print 'Switch does type coercion'; break; // 在case中必須使用一個break語句, // 否則在執行完這個語句后會直接執行后面的語句 case 'two': case 'three': // 如果$variable是 'two' 或 'three',執行這里的語句 break; default: // 其他情況 } // While, do...while 和 for 循環 $i = 0; while ($i < 5) { echo $i++; }; // 輸出 "01234" echo "\n"; $i = 0; do { echo $i++; } while ($i < 5); // 輸出 "01234" echo "\n"; for ($x = 0; $x < 10; $x++) { echo $x; } // 輸出 "0123456789" echo "\n"; $wheels = ['bicycle' => 2, 'car' => 4]; // Foreach 循環可以遍歷數組 foreach ($wheels as $wheel_count) { echo $wheel_count; } // 輸出 "24" echo "\n"; // 也可以同時遍歷鍵和值 foreach ($wheels as $vehicle => $wheel_count) { echo "A $vehicle has $wheel_count wheels"; } echo "\n"; $i = 0; while ($i < 5) { if ($i === 3) { break; // 退出循環 } echo $i++; } // 輸出 "012" for ($i = 0; $i < 5; $i++) { if ($i === 3) { continue; // 跳過此次遍歷 } echo $i; } // 輸出 "0124" /******************************** * 函數 */ // 通過"function"定義函數: function my_function () { return 'Hello'; } echo my_function(); // => "Hello" // 函數名需要以字母或者下劃線開頭, // 后面可以跟著任意的字母、下劃線、數字. function add ($x, $y = 1) { // $y 是可選參數,默認值為 1 $result = $x + $y; return $result; } echo add(4); // => 5 echo add(4, 2); // => 6 // $result 在函數外部不可訪問 // print $result; // 拋出警告 // 從 PHP 5.3 起我們可以定義匿名函數 $inc = function ($x) { return $x + 1; }; echo $inc(2); // => 3 function foo ($x, $y, $z) { echo "$x - $y - $z"; } // 函數也可以返回一個函數 function bar ($x, $y) { // 用 'use' 將外部的參數引入到里面 return function ($z) use ($x, $y) { foo($x, $y, $z); }; } $bar = bar('A', 'B'); $bar('C'); // 輸出 "A - B - C" // 你也可以通過字符串調用函數 $function_name = 'add'; echo $function_name(1, 2); // => 3 // 在通過程序來決定調用哪個函數時很有用 // 或者,使用 call_user_func(callable $callback [, $parameter [, ... ]]); /******************************** * 導入 */ <?php // 被導入的php文件也必須以php開標簽開始 include 'my-file.php'; // 現在my-file.php就在當前作用域中可見了 // 如果這個文件無法被導入(比如文件不存在),會拋出警告 include_once 'my-file.php'; // my-file.php中的代碼在其他地方被導入了,那么就不會被再次導入 // 這會避免類的多重定義錯誤 require 'my-file.php'; require_once 'my-file.php'; // 和include功能相同,只不過如果不能被導入時,會拋出錯誤 // my-include.php的內容: <?php return 'Anything you like.'; // 文件結束 // Include和Require函數也有返回值 $value = include 'my-include.php'; // 被引入的文件是根據文件路徑或者include_path配置來查找到的 // 如果文件最終沒有被找到,那么就會查找當前文件夾。之后才會報錯 /* */ /******************************** * 類 */ // 類是由class關鍵字定義的 class MyClass { const MY_CONST = 'value'; // 常量 static $staticVar = 'static'; // 屬性必須聲明其作用域 public $property = 'public'; public $instanceProp; protected $prot = 'protected'; // 當前類和子類可訪問 private $priv = 'private'; // 僅當前類可訪問 // 通過 __construct 來定義構造函數 public function __construct($instanceProp) { // 通過 $this 訪問當前對象 $this->instanceProp = $instanceProp; } // 方法就是類中定義的函數 public function myMethod() { print 'MyClass'; } final function youCannotOverrideMe() { } public static function myStaticMethod() { print 'I am static'; } } echo MyClass::MY_CONST; // 輸出 'value'; echo MyClass::$staticVar; // 輸出 'static'; MyClass::myStaticMethod(); // 輸出 'I am static'; // 通過new來新建實例 $my_class = new MyClass('An instance property'); // 如果不傳遞參數,那么括號可以省略 // 用 -> 來訪問成員 echo $my_class->property; // => "public" echo $my_class->instanceProp; // => "An instance property" $my_class->myMethod(); // => "MyClass" // 使用extends來生成子類 class MyOtherClass extends MyClass { function printProtectedProperty() { echo $this->prot; } // 方法覆蓋 function myMethod() { parent::myMethod(); print ' > MyOtherClass'; } } $my_other_class = new MyOtherClass('Instance prop'); $my_other_class->printProtectedProperty(); // => 輸出 "protected" $my_other_class->myMethod(); // 輸出 "MyClass > MyOtherClass" final class YouCannotExtendMe { } // 你可以使用“魔法方法”來生成getter和setter方法 class MyMapClass { private $property; public function __get($key) { return $this->$key; } public function __set($key, $value) { $this->$key = $value; } } $x = new MyMapClass(); echo $x->property; // 會使用 __get() 方法 $x->property = 'Something'; // 會使用 __set() 方法 // 類可以是被定義成抽象類 (使用 abstract 關鍵字) 或者 // 去實現接口 (使用 implements 關鍵字). // 接口需要通過interface關鍵字來定義 interface InterfaceOne { public function doSomething(); } interface InterfaceTwo { public function doSomethingElse(); } // 接口可以被擴展 interface InterfaceThree extends InterfaceTwo { public function doAnotherContract(); } abstract class MyAbstractClass implements InterfaceOne { public $x = 'doSomething'; } class MyConcreteClass extends MyAbstractClass implements InterfaceTwo { public function doSomething() { echo $x; } public function doSomethingElse() { echo 'doSomethingElse'; } } // 一個類可以實現多個接口 class SomeOtherClass implements InterfaceOne, InterfaceTwo { public function doSomething() { echo 'doSomething'; } public function doSomethingElse() { echo 'doSomethingElse'; } } /******************************** * 特征 */ // 特征 從 PHP 5.4.0 開始包括,需要用 "trait" 這個關鍵字聲明 trait MyTrait { public function myTraitMethod() { print 'I have MyTrait'; } } class MyTraitfulClass { use MyTrait; } $cls = new MyTraitfulClass(); $cls->myTraitMethod(); // 輸出 "I have MyTrait" /******************************** * 命名空間 */ // 這部分是獨立于這個文件的 // 因為命名空間必須在一個文件的開始處。 <?php // 類會被默認的放在全局命名空間中,可以被一個\來顯式調用 $cls = new \MyClass(); // 為一個文件設置一個命名空間 namespace My\Namespace; class MyClass { } // (或者從其他文件中) $cls = new My\Namespace\MyClass; //或者從其他命名空間中 namespace My\Other\Namespace; use My\Namespace\MyClass; $cls = new MyClass(); // 你也可以為命名空間起一個別名 namespace My\Other\Namespace; use My\Namespace as SomeOtherNamespace; $cls = new SomeOtherNamespace\MyClass(); */ ~~~ ## 更多閱讀 訪問?[PHP 官方文檔](http://www.php.net/manual/) 如果你對最佳實踐感興趣(實時更新)?[PHP The Right Way](http://www.phptherightway.com/). 如果你很熟悉善于包管理的語言?[Composer](http://getcomposer.org/). 如要了解通用標準,請訪問PHP Framework Interoperability Group’s?[PSR standards](https://github.com/php-fig/fig-standards).
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看