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 实用程序来完成一次性任务的调度。
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 表达式中的 月份中的某天
或 星期几
。
-
这份 PHP 备忘单为快速查找最常用代码的正确语法提供了参考
+<?php // 以 PHP 开放标签开头
+echo "Hello World\n";
+print("Hello quickref.me");
+?>
+
+PHP 运行命令
+$ php hello.php
+
+$boolean1 = true;
+$boolean2 = True;
+$int = 12;
+$float = 3.1415926;
+unset($float); // 删除变量
+$str1 = "How are you?";
+$str2 = 'Fine, thanks';
+
+查看: Types
+$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
+$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
+$x = 1;
+$y = 2;
+$sum = $x + $y;
+echo $sum; # => 3
+
+查看: Operators
+<?php // 以 PHP 开放标签开头。
+$fruit = 'apple';
+echo "I was imported";
+return 'Anything you like.';
+?>
+
+<?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.
+?>
+
+function add($num1, $num2 = 1) {
+ return $num1 + $num2;
+}
+echo add(10); # => 11
+echo add(10, 5); # => 15
+
+查看: Functions
+# 这是一个单行 shell 样式的注释
+// 这是一行 c++ 风格的注释
+/* 这是一个多行注释
+ 另一行注释 */
+
+const MY_CONST = "hello";
+echo MY_CONST; # => hello
+
+# => MY_CONST is: hello
+echo 'MY_CONST is: ' . MY_CONST;
+
+class Student {
+ public function __construct($name) {
+ $this->name = $name;
+ }
+}
+$alex = new Student("Alex");
+
+查看: Classes
+$boolean1 = true;
+$boolean2 = TRUE;
+$boolean3 = false;
+$boolean4 = FALSE;
+$boolean5 = (boolean) 1; # => true
+$boolean6 = (boolean) 0; # => false
+
+布尔值不区分大小写
+$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
+echo 'this is a simple string';
+
+查看: Strings
+$arr = array("hello", "world", "!");
+
+查看: Arrays
+$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
+
+$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
+
+function bar(): iterable {
+ return [1, 2, 3];
+}
+function gen(): iterable {
+ yield 1;
+ yield 2;
+ yield 3;
+}
+foreach (bar() as $value) {
+ echo $value; # => 123
+}
+
+# => '$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';
+
+$str = "foo";
+// 未插值的多行
+$nowdoc = <<<'END'
+Multi line string
+$str
+END;
+// 将执行字符串插值
+$heredoc = <<<END
+Multi line
+$str
+END;
+
+$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
+
+另见: 字符串函数
+$a1 = ["hello", "world", "!"]
+$a2 = array("hello", "world", "!");
+$a3 = explode(",", "apple,pear,peach");
+
+$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];
+
+$array = [1, 2];
+function foo(int $a, int $b) {
+ echo $a; # => 1
+ echo $b; # => 2
+}
+foo(...$array);
+
+function foo($first, ...$other) {
+ var_dump($first); # => a
+ var_dump($other); # => ['b', 'c']
+}
+foo('a', 'b', 'c' /*, ...*/ );
+// 或
+function foo($first, string ...$other){}
+
+:- | - |
---|---|
+ | 添加 |
- | 减法 |
* | 乘法 |
/ | 分配 |
% | 取模 |
** | 求幂 |
:- | - |
---|---|
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
+
+:- | - |
---|---|
& | 和 |
` | ` |
^ | 异或(异或) |
~ | 不是 |
<< | 左移 |
>> | 右移 |
$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";
+}
+
+$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
+
+$i = 1;
+# => 12345
+while ($i <= 5) {
+ echo $i++;
+}
+
+$i = 1;
+# => 12345
+do {
+ echo $i++;
+} while ($i <= 5);
+
+# => 12345
+for ($i = 1; $i <= 5; $i++) {
+ echo $i;
+}
+
+# => 123
+for ($i = 1; $i <= 5; $i++) {
+ if ($i === 4) {
+ break;
+ }
+ echo $i;
+}
+
+# => 1235
+for ($i = 1; $i <= 5; $i++) {
+ if ($i === 4) {
+ continue;
+ }
+ echo $i;
+}
+
+$a = ['foo' => 1, 'bar' => 2];
+# => 12
+foreach ($a as $k) {
+ echo $k;
+}
+
+查看: Array iteration
+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
+
+class Student {
+ public function __construct($name) {
+ $this->name = $name;
+ }
+ public function print() {
+ echo "Name: " . $this->name;
+ }
+}
+$alex = new Student("Alex");
+$alex->print(); # => Name: Alex
+
+class ExtendClass extends SimpleClass
+{
+ // 重新定义父方法
+ function displayVar()
+ {
+ echo "Extending class\n";
+ parent::displayVar();
+ }
+}
+$extended = new ExtendClass();
+$extended->displayVar();
+
+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!";
+}
+
+$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) {
+ // 处理我的异常
+}
+
+// 从 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中的正则表达式
+:- | - |
---|---|
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;
+
+PostgreSQL 备忘清单为您提供了常用的 PostgreSQL 命令和语句。