From 1eb61f998fb39ab3514c2549b6cd02e619f5df26 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Sun, 13 Nov 2022 06:19:42 +0000 Subject: [PATCH] feat: add `php.md` #57 2d29bce40d7d2b41248d80cef7e2b48daaffe0d3 --- docs/cron.html | 4 +- docs/php.html | 959 +++++++++++++++++++++++++++++++++++++++++++++ docs/postgres.html | 4 +- index.html | 4 + 4 files changed, 967 insertions(+), 4 deletions(-) create mode 100644 docs/php.html diff --git a/docs/cron.html b/docs/cron.html index 97224efb..4a5c54b9 100644 --- a/docs/cron.html +++ b/docs/cron.html @@ -42,7 +42,7 @@

Cron 最适合安排重复性任务。 可以使用关联的 at 实用程序来完成一次性任务的调度。

Crontab 格式

格式

Min  Hour Day  Mon  Weekday
@@ -270,7 +270,7 @@
 
 
特殊字符说明
星号(*)匹配字段中的所有值或任何可能的值。
横杆(-)用于定义范围。例如:第 5 个字段(星期几)中的 1-5 每个工作日,即星期一到星期五
斜线 (/)第一个字段(分钟)/15 表示每十五分钟或范围的增量。
逗号(,)用于分隔项目。例如:第二个字段(小时)中的 2、6、8 在凌晨 2 点、早上 6 点和早上 8 点执行
L仅允许用于 月份中的某天星期几 字段,星期几 中的 2L 表示每个月的最后一个星期二
井号 (#)仅允许用于 星期几 字段,后面必须在 1 到 5 的范围内。例如,4#1 表示给定月份的“第一个星期四”。
问号(?)可以代替“*”并允许用于月份和星期几。使用仅限于 cron 表达式中的 月份中的某天星期几
-

Also see

+

另见

  • Devhints (devhints.io)
  • Crontab Generator (crontab-generator.org)
  • diff --git a/docs/php.html b/docs/php.html new file mode 100644 index 00000000..01bd60fd --- /dev/null +++ b/docs/php.html @@ -0,0 +1,959 @@ + + + + +PHP 备忘清单 + & php cheatsheet & Quick Reference + + + + + + + +

    + + +PHP 备忘清单

    +

    这份 PHP 备忘单为快速查找最常用代码的正确语法提供了参考

    +

    入门

    +

    hello.php

    +
    <?php // 以 PHP 开放标签开头
    +echo "Hello World\n";
    +print("Hello quickref.me");
    +?>
    +
    +

    PHP 运行命令

    +
    $ php hello.php
    +
    +

    变量 Variables

    +
    $boolean1 = true;
    +$boolean2 = True;
    +$int = 12;
    +$float = 3.1415926;
    +unset($float);  // 删除变量
    +$str1 = "How are you?";
    +$str2 = 'Fine, thanks';
    +
    +

    查看: Types

    +

    字符串 Strings

    +
    $url = "quickref.me";
    +echo "I'm learning PHP at $url";
    +// 连接字符串
    +echo "I'm learning PHP at " . $url;
    +$hello = "Hello, ";
    +$hello .= "World!";
    +echo $hello;   # => Hello, World!
    +
    +

    查看: Strings

    +

    数组 Arrays

    +
    $num = [1, 3, 5, 7, 9];
    +$num[5] = 11;
    +unset($num[2]);    // 删除变量
    +print_r($num);     # => 1 3 7 9 11
    +echo count($num);  # => 5
    +
    +

    查看: Arrays

    +

    运算符 Operators

    +
    $x = 1;
    +$y = 2;
    +$sum = $x + $y;
    +echo $sum;   # => 3
    +
    +

    查看: Operators

    +

    Include

    + +

    vars.php

    +
    <?php // 以 PHP 开放标签开头。
    +$fruit = 'apple';
    +echo "I was imported";
    +return 'Anything you like.';
    +?>
    +
    +

    test.php

    +
    <?php
    +include 'vars.php';
    +echo $fruit . "\n";   # => apple
    +/* 与 include 相同,
    +如果不能包含则导致错误*/
    +require 'vars.php';
    +// 也有效
    +include('vars.php');
    +require('vars.php');
    +// 通过 HTTP 包含
    +include 'http://x.com/file.php';
    +// 包含和返回语句
    +$result = include 'vars.php';
    +echo $result;  # => Anything you like.
    +?>
    +
    +

    功能 Functions

    +
    function add($num1, $num2 = 1) {
    +    return $num1 + $num2;
    +}
    +echo add(10);    # => 11
    +echo add(10, 5); # => 15
    +
    +

    查看: Functions

    +

    注释 Comments

    +
    # 这是一个单行 shell 样式的注释
    +// 这是一行 c++ 风格的注释
    +/* 这是一个多行注释
    +    另一行注释 */
    +
    +

    常数 Constants

    +
    const MY_CONST = "hello";
    +echo MY_CONST;   # => hello
    +
    +# => MY_CONST is: hello
    +echo 'MY_CONST is: ' . MY_CONST; 
    +
    +

    类 Classes

    +
    class Student {
    +  public function __construct($name) {
    +      $this->name = $name;
    +  }
    +}
    +$alex = new Student("Alex");
    +
    +

    查看: Classes

    +

    PHP 类型

    +

    布尔值 Boolean

    + +
    $boolean1 = true;
    +$boolean2 = TRUE;
    +$boolean3 = false;
    +$boolean4 = FALSE;
    +$boolean5 = (boolean) 1;   # => true
    +$boolean6 = (boolean) 0;   # => false
    +
    +

    布尔值不区分大小写

    +

    整数 Integer

    + +
    $int1 = 28;    # => 28
    +$int2 = -32;   # => -32
    +$int3 = 012;   # => 10 (octal)
    +$int4 = 0x0F;  # => 15 (hex)
    +$int5 = 0b101; # => 5  (binary)
    +# => 2000100000 (decimal, PHP 7.4.0)
    +$int6 = 2_000_100_000;
    +
    +

    另见: Integers

    +

    字符串 Strings

    +
    echo 'this is a simple string';
    +
    +

    查看: Strings

    +

    数组 Arrays

    +
    $arr = array("hello", "world", "!");
    +
    +

    查看: Arrays

    +

    浮点数 Float (Double)

    +
    $float1 = 1.234;
    +$float2 = 1.2e7;
    +$float3 = 7E-10;
    +$float4 = 1_234.567;  // as of PHP 7.4.0
    +var_dump($float4);    // float(1234.567)
    +$float5 = 1 + "10.5";   # => 11.5
    +$float6 = 1 + "-1.3e3"; # => -1299
    +
    +

    Null

    +
    $a = null;
    +$b = 'Hello php!';
    +echo $a ?? 'a is unset'; # => a is unset
    +echo $b ?? 'b is unset'; # => Hello php
    +$a = array();
    +$a == null    # => true
    +$a === null   # => false
    +is_null($a)   # => false
    +
    +

    可迭代对象 Iterables

    +
    function bar(): iterable {
    +  return [1, 2, 3];
    +}
    +function gen(): iterable {
    +  yield 1;
    +  yield 2;
    +  yield 3;
    +}
    +foreach (bar() as $value) {
    +  echo $value;   # => 123
    +} 
    +
    +

    PHP 字符串

    +

    字符串 String

    +
    # => '$String'
    +$sgl_quotes = '$String';
    +# => 'This is a $String.'
    +$dbl_quotes = "This is a $sgl_quotes.";
    +# => a    tab character.
    +$escaped   = "a \t tab character.";
    +# => a slash and a t: \t
    +$unescaped = 'a slash and a t: \t';
    +
    +

    多行 Multi-line

    +
    $str = "foo";
    +// 未插值的多行
    +$nowdoc = <<<'END'
    +Multi line string
    +$str
    +END;
    +// 将执行字符串插值
    +$heredoc = <<<END
    +Multi line
    +$str
    +END;
    +
    +

    操作 Manipulation

    +
    $s = "Hello Phper";
    +echo strlen($s);       # => 11
    +echo substr($s, 0, 3); # => Hel
    +echo substr($s, 1);    # => ello Phper
    +echo substr($s, -4, 3);# => hpe
    +echo strtoupper($s);   # => HELLO PHPER
    +echo strtolower($s);   # => hello phper
    +echo strpos($s, "l");      # => 2
    +var_dump(strpos($s, "L")); # => false
    +
    +

    另见: 字符串函数

    +

    PHP 数组

    +

    定义

    + +
    $a1 = ["hello", "world", "!"]
    +$a2 = array("hello", "world", "!");
    +$a3 = explode(",", "apple,pear,peach");
    +
    +

    混合 int 和 string 键

    +
    $array = array(
    +    "foo" => "bar",
    +    "bar" => "foo",
    +    100   => -100,
    +    -100  => 100,
    +);
    +var_dump($array);
    +
    +

    短数组语法

    +
    $array = [
    +    "foo" => "bar",
    +    "bar" => "foo",
    +];
    +
    +

    多阵列

    +
    $multiArray = [ 
    +    [1, 2, 3],
    +    [4, 5, 6],
    +    [7, 8, 9],
    +];
    +print_r($multiArray[0][0]) # => 1
    +print_r($multiArray[0][1]) # => 2
    +print_r($multiArray[0][2]) # => 3
    +
    +

    多类型

    + +
    $array = array(
    +    "foo" => "bar",
    +    42    => 24,
    +    "multi" => array(
    +         "dim" => array(
    +             "a" => "foo"
    +         )
    +    )
    +);
    +# => string(3) "bar"
    +var_dump($array["foo"]);
    +# => int(24)
    +var_dump($array[42]);    
    +# =>  string(3) "foo"
    +var_dump($array["multi"]["dim"]["a"]);
    +
    +

    操作

    +
    $arr = array(5 => 1, 12 => 2);
    +$arr[] = 56;      // 附加
    +$arr["x"] = 42;   // 用键添加
    +sort($arr);       // 排序
    +unset($arr[5]);   // 消除
    +unset($arr);      // 移除所有
    +
    +

    查看: 数组函数

    +

    索引迭代

    +
    $array = array('a', 'b', 'c');
    +$count = count($array);
    +for ($i = 0; $i < $count; $i++) {
    +    echo "i:{$i}, v:{$array[$i]}\n";
    +}
    +
    +

    价值迭代

    +
    $colors = array('red', 'blue', 'green');
    +foreach ($colors as $color) {
    +    echo "Do you like $color?\n";
    +}
    +
    +

    关键迭代

    +
    $arr = ["foo" => "bar", "bar" => "foo"];
    +foreach ( $arr as $key => $value )
    +{
    +    echo "key: " . $key . "\n";
    +    echo "val: {$arr[$key]}\n";
    +}
    +
    +

    串联阵列

    +
    $a = [1, 2];
    +$b = [3, 4];
    +// PHP 7.4 以后
    +# => [1, 2, 3, 4]
    +$result = [...$a, ...$b];
    +
    +

    Into 函数

    +
    $array = [1, 2];
    +function foo(int $a, int $b) {
    +  echo $a; # => 1
    +    echo $b; # => 2
    +}
    +foo(...$array);
    +
    +

    Splat运算符

    +
    function foo($first, ...$other) {
    +  var_dump($first); # => a
    +    var_dump($other); # => ['b', 'c']
    +}
    +foo('a', 'b', 'c' /*, ...*/ );
    +// 或
    +function foo($first, string ...$other){}
    +
    +

    PHP 运算符

    +

    算术

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    +添加
    -减法
    *乘法
    /分配
    %取模
    **求幂
    +

    分配

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    a += b如同 a = a + b
    a -= b如同 a = a – b
    a *= b如同 a = a * b
    a /= b如同 a = a / b
    a %= b如同 a = a % b
    +

    比较

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    ==平等的
    ===完全相同的
    !=不相等
    <>不相等
    !==不相同
    <少于
    >比...更棒
    <=小于或等于
    >=大于或等于
    <=>小于/等于/大于
    +

    逻辑的

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    and
    or或者
    xor独家或
    !不是
    &&
    ||或者
    +

    算术

    +
    // 算术
    +$sum        = 1 + 1; // 2
    +$difference = 2 - 1; // 1
    +$product    = 2 * 2; // 4
    +$quotient   = 2 / 1; // 2
    +// 速记算术
    +$num = 0;
    +$num += 1;       // 将 $num 增加 1
    +echo $num++;     // 打印 1(评估后的增量)
    +echo ++$num;     // 打印 3(评估前的增量)
    +$num /= $float;  // 将商除并分配给 $num
    +
    +

    按位

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    &
    ``
    ^异或(异或)
    ~不是
    <<左移
    >>右移
    +

    PHP 条件

    +

    If elseif else

    +
    $a = 10;
    +$b = 20;
    +if ($a > $b) {
    +    echo "a is bigger than b";
    +} elseif ($a == $b) {
    +    echo "a is equal to b";
    +} else {
    +    echo "a is smaller than b";
    +}
    +
    +

    Switch

    +
    $x = 0;
    +switch ($x) {
    +    case '0':
    +        print "it's zero";
    +        break; 
    +    case 'two':
    +    case 'three':
    +        // do something
    +        break;
    +    default:
    +        // do something
    +}
    +
    +

    三元运算符

    +
    # => Does
    +print (false ? 'Not' : 'Does');
    +$x = false;
    +# => Does
    +print($x ?: 'Does');
    +$a = null;
    +$b = 'Does print';
    +# => a is unsert
    +echo $a ?? 'a is unset';
    +# => print
    +echo $b ?? 'b is unset';
    +
    +

    匹配

    +
    $statusCode = 500;
    +$message = match($statusCode) {
    +  200, 300 => null,
    +  400 => '未找到',
    +  500 => '服务器错误',
    +  default => '已知状态码',
    +};
    +echo $message; # => 服务器错误
    +
    +

    查看: Match

    +

    匹配表达式

    +
    $age = 23;
    +$result = match (true) {
    +    $age >= 65 => 'senior',
    +    $age >= 25 => 'adult',
    +    $age >= 18 => 'young adult',
    +    default => 'kid',
    +};
    +echo $result; # => young adult
    +
    +

    PHP 循环

    +

    while 循环

    +
    $i = 1;
    +# => 12345
    +while ($i <= 5) {
    +    echo $i++;
    +}
    +
    +

    do while 循环

    +
    $i = 1;
    +# => 12345
    +do {
    +    echo $i++;
    +} while ($i <= 5);
    +
    +

    for i 循环

    +
    # => 12345
    +for ($i = 1; $i <= 5; $i++) {
    +    echo $i;
    +}
    +
    +

    break 跳出循环

    +
    # => 123
    +for ($i = 1; $i <= 5; $i++) {
    +    if ($i === 4) {
    +        break;
    +    }
    +    echo $i;
    +}
    +
    +

    continue 继续

    +
    # => 1235
    +for ($i = 1; $i <= 5; $i++) {
    +    if ($i === 4) {
    +        continue;
    +    }
    +    echo $i;
    +}
    +
    +

    foreach 循环

    +
    $a = ['foo' => 1, 'bar' => 2];
    +# => 12
    +foreach ($a as $k) {
    +    echo $k;
    +}
    +
    +

    查看: Array iteration

    +

    PHP 函数

    +

    返回值

    +
    function square($x)
    +{
    +    return $x * $x;
    +}
    +echo square(4);  # => 16
    +
    +

    返回类型

    +
    // 基本返回类型声明
    +function sum($a, $b): float {/*...*/}
    +function get_item(): string {/*...*/}
    +class C {}
    +// 返回一个对象
    +function getC(): C { return new C; }
    +
    +

    可空返回类型

    +
    // 在 PHP 7.1 中可用
    +function nullOrString(int $v) : ?string
    +{
    +    return $v % 2 ? "odd" : null;
    +}
    +echo nullOrString(3);       # => odd
    +var_dump(nullOrString(4));  # => NULL
    +
    +

    查看: Nullable types

    +

    无效函数

    +
    // 在 PHP 7.1 中可用
    +function voidFunction(): void
    +{
    +  echo 'Hello';
    +  return;
    +}
    +voidFunction();  # => Hello
    +
    +

    变量函数

    +
    function bar($arg = '')
    +{
    +    echo "In bar(); arg: '$arg'.\n";
    +}
    +$func = 'bar';
    +$func('test'); # => In bar(); arg: test
    +
    +

    匿名函数

    +
    $greet = function($name)
    +{
    +    printf("Hello %s\r\n", $name);
    +};
    +$greet('World'); # => Hello World
    +$greet('PHP');   # => Hello PHP
    +
    +

    递归函数

    +
    function recursion($x)
    +{
    +    if ($x < 5) {
    +        echo "$x";
    +        recursion($x + 1);
    +    }
    +}
    +recursion(1);  # => 1234
    +
    +

    默认参数

    +
    function coffee($type = "cappuccino")
    +{
    +    return "Making a cup of $type.\n";
    +}
    +# => 制作一杯卡布奇诺
    +echo coffee();
    +# => 制作一杯
    +echo coffee(null);
    +# => 制作一杯浓缩咖啡
    +echo coffee("espresso");
    +
    +

    箭头函数

    +
    $y = 1;
    + 
    +$fn1 = fn($x) => $x + $y;
    +// 相当于按值使用 $y:
    +$fn2 = function ($x) use ($y) {
    +    return $x + $y;
    +};
    +echo $fn1(5);   # => 6
    +echo $fn2(5);   # => 6
    +
    +

    PHP 类

    +

    构造函数 Constructor

    +
    class Student {
    +    public function __construct($name) {
    +        $this->name = $name;
    +    }
    +    public function print() {
    +        echo "Name: " . $this->name;
    +    }
    +}
    +$alex = new Student("Alex");
    +$alex->print();    # => Name: Alex
    +
    +

    继承 Inheritance

    +
    class ExtendClass extends SimpleClass
    +{
    +    // 重新定义父方法
    +    function displayVar()
    +    {
    +        echo "Extending class\n";
    +        parent::displayVar();
    +    }
    +}
    +$extended = new ExtendClass();
    +$extended->displayVar();
    +
    +

    类变量 Classes variables

    + +
    class MyClass
    +{
    +    const MY_CONST         = 'value';
    +    static $staticVar      = 'static';
    +    // 可见度
    +    public static $var1    = 'pubs';
    +    // 仅限类
    +    private static $var2   = 'pris';
    +    // 类和子类
    +    protected static $var3 = 'pros';
    +    // 类和子类
    +    protected $var6        = 'pro';
    +    // 仅限类
    +    private $var7          = 'pri';  
    +}
    +
    +

    静态访问

    +
    echo MyClass::MY_CONST;   # => value
    +echo MyClass::$staticVar; # => static
    +
    +

    魔术方法

    +
    class MyClass
    +{
    +    // 对象被视为字符串
    +    public function __toString()
    +    {
    +        return $property;
    +    }
    +    // 与 __construct() 相反
    +    public function __destruct()
    +    {
    +        print "Destroying";
    +    }
    +}
    +
    +

    接口

    +
    interface Foo 
    +{
    +    public function doSomething();
    +}
    +interface Bar
    +{
    +    public function doSomethingElse();
    +}
    +class Cls implements Foo, Bar 
    +{
    +    public function doSomething() {}
    +    public function doSomethingElse() {}
    +}
    +
    +

    各种各样的

    +

    基本错误处理

    +
    try {
    +    // 做一点事
    +} catch (Exception $e) {
    +    // 处理异常
    +} finally {
    +    echo "Always print!";
    +}
    +
    +

    PHP 8.0 中的异常

    + +
    $nullableValue = null;
    +try {
    +  $value = $nullableValue ?? throw new InvalidArgumentException();
    +} catch (InvalidArgumentException) { // 变量是可选的
    +    // 处理我的异常
    +    echo "print me!";
    +}
    +
    +

    自定义异常

    + +
    class MyException extends Exception {
    +    // 做一点事
    +}
    +
    +

    用法

    +
    try {
    +    $condition = true;
    +    if ($condition) {
    +        throw new MyException('bala');
    +    }
    +} catch (MyException $e) {
    +    // 处理我的异常
    +}
    +
    +

    Nullsafe 运算符

    + +
    // 从 PHP 8.0.0 开始,这一行:
    +$result = $repo?->getUser(5)?->name;
    +// 相当于下面的代码:
    +if (is_null($repo)) {
    +    $result = null;
    +} else {
    +    $user = $repository->getUser(5);
    +    if (is_null($user)) {
    +        $result = null;
    +    } else {
    +        $result = $user->name;
    +    }
    +}
    +
    +

    另见: Nullsafe 运算符

    +

    常用表达

    +
    $str = "Visit Quickref.me";
    +echo preg_match("/qu/i", $str); # => 1
    +
    +

    查看: PHP中的正则表达式

    +

    fopen() 模式

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    :--
    r
    r+读写,前置
    w写入,截断
    w+读写,截断
    a写,追加
    a+读写,追加
    +

    运行时定义的常量

    +
    define("CURRENT_DATE", date('Y-m-d'));
    +// 一种可能的表示
    +echo CURRENT_DATE;   # => 2021-01-05
    +# => CURRENT_DATE is: 2021-01-05
    +echo 'CURRENT_DATE is: ' . CURRENT_DATE; 
    +
    +

    另见

    + +
    © 2022 Kenny Wang, All rights reserved.
    + diff --git a/docs/postgres.html b/docs/postgres.html index 20efde82..710333de 100644 --- a/docs/postgres.html +++ b/docs/postgres.html @@ -42,7 +42,7 @@

    PostgreSQL 备忘清单为您提供了常用的 PostgreSQL 命令和语句。

另见

diff --git a/index.html b/index.html index b02ab073..7d78a2ae 100644 --- a/index.html +++ b/index.html @@ -108,6 +108,10 @@ MATLAB + + + +PHP