创建: 2019/06/19

# TODO: 2019/07/11 foreach

https://www.sejuku.net/blog/22195#foreach

安装
 MAMP  
变量与运算符
 php标签
 <?php ... ?>

<?php
...
?>

● 在文件最后的 ?> 通常省略, 避免bug

● 输出文字

<?= 字符串; ?>
// 相当于
<?php echo 字符串; ?>
 在html里插入php

● 文件名后缀为php

 声明的分隔与注释 
 分隔符

;

 除了自定义的变量与常量都不区分大小写  
 注释
 单行注释
// 注释A...
# 注释B...  
 多行注释
/*
注释
*/
   
 变量与常量 
 变量
 声明

无需声明, 带上  $  即可

$sample = 1;

系统定义的变量

$_ 开头的是超级全局变量

 $GLOBALS  全局可用的所有变量的指针
 $_SERVER  服务器环境和运行环境
 $_GET  HTTP GET变量
 $_POST  HTTP POST变量
 $_FILES  HTTP上传文件变量
 $_REQUEST  HTTP请求变量
 $_SESSION  session变量
 $_ENV  环境变量
 $_COOKIE  HTTP cookie
 $php_errormsg  最近的错误信息
 $HTTP_RAW_POST_DATA  原生post数据
 $argc  传入脚本的参数数量
 $argv  传入脚本的参数数组 
 常量
 声明

关键词 const

const SAMPLE = 1.0
 注意  习惯上常量所有字母都大写
 已定义的常量
 核心模块变量
 PHP_VERSION_ID  运行中的php版本, 整数值
 PHP_EOL  现在OS的换行文字
 PHP_INI_MAX  整数最大值
 PHP_INT_MIN  整数最小值
 PHP_OS  现在的OS
 TRUE  true
 FALSE  false
 NULL  null
 E_ERROR  重大的运行错误
 E_PARSE  编译器的解析错误
 逻辑变量
 __LINE__  现在的行号
 __FILE__  文件的绝对路径与文件名
 __DIR__  当前文件所在文件夹
 __FUNCTION__  现在的函数名
 __CLASS__

现在的类名

# TODO: check here p42

 __TRAIT__   跟踪名
 __METHOD__  类的方法名
 __NAMESPACE__  现在的命名空间的名称
 展示字符串或变量 

都输出到html里

 输出多个值
echo a1(, a2, ...)

echo 'sample'; //=> sample
echo 'a', 'b', 'c'; //=> abc

● 只有一个变量时可以带括号

echo('sample'); // => sample
 输出一个值 
print(值) // 可以不要括号

● 连结多个值, 用  .

$sample="b";
print("a".$sample); // => ab
 debug用

# TODO: finish here p44

● 要想带换行, 放入 <pre>...</pre> 标签

http://www.w3school.com.cn/tags/tag_pre.asp

 print_r()  
 var_dump()  
   
 运算符
 代入运算符

$a = b;
 复合代入运算符
 +=, -=, *=, /=, %=  
 .=  
$a."_pdf"
 算术运算符

+, - , *, /, %, **(指数)

2**10 // => 1024
 递加递减

++, --

$a++ // 先评价式子最后递加
++$a // 先递加再评价式子

● 对字符串递加递减

认定成数字的作为数字, 认定成字母的按字母顺序

 字符串连结运算符

.

"hello "."world"; //=>hello world

● 对数字使用则自动转为字符串

100 . 200 //=? 100200

带有数字时  .  两侧放上空格

 比较运算符
 >, <  常识
 >=, <=  常识
 ==, !=  常识
 ===  两侧类型相同 且 值相等
 !==  两侧类型不同 或 值不相等
   
 php7新增
 <=>

$a <=> $b

a>b时为正, a=b时为0, a<b时为负

(相当于a-b)

 ??
$a ?? $b

a为null则用b的值, 否则用$a

● 连用

$a ?? $b ?? "default";
 逻辑运算符

&&

and

$a && $b
$a and $b

||

or

$a || $b
$a or $b
 xor

$a xor $b
 !

!$a
   
 三项运算符

逻辑式 ? true时的值 : false时的值

 位运算符
 <<, >>  移位
 &

都是1则1, 否则0

$a & $b
 | 

有1则1, 否则0

$a | $b 
 ^ 

两个相反则为1

$a ^ $b
 ~ 

0, 1对调

~$a
   
 转换运算符

php不验证类型, 根于式子自动转换。故一般不需要

(int)

(integer)

 转换为整数

(bool)

(boolean)

 转换为布尔值

(float)

(double)

(real)

 转换为浮点数
 (string)  转换为字符串
 (array)  转换为数组
 (object)   转换为object
 (unset)  转换为null
 类型运算符

如果是指定类的实例则返回true, 否则返回false

实例 instanceof 类

$now instanceof DateTime
条件与循环
 if

● 标准写法

if(c1) {
...
} else if (c2) {
...
} else if (c3) {
...
} else {
...
}

● 不带括号写法

if (c1):
...
elseif (c2):
...
else
...
endif;
 switch 

● 标准写法

switch(式子) {
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;

● 不带括号写法

switch(式子):
case v1:
...
break;
case v2:
...
break;
...
default: // 可省略
...
break;
endswitch;
 while

● 标准写法

while (c) {
...
};

● 不带括号写法

while (c):
...
endwhile;
 do-while 

● 标准写法

do {
...
} while (c);

● 不带括号写法

不存在

 for 

● 标准写法

for(初期条件; 条件式; 计数器更新方式) {
...
}

● 不带括号写法

for(初期条件; 条件式; 计数器更新方式):
...
endfor
 break  
 continue  
函数
 常用的数学函数
 abs(数值)  返回绝对值
 ceil(数值)  大于参数的最小整数
 floor(数值)  小于参数的最大整数
 max(n1, n2, ...)

获取最大值, string则为字母顺序

 min(n1, n2, ...)  获取最小值, string则为字母顺序
 sqrt(数值)  平方根
 pow(a, b)

a的b次方

相当于

a**b 
 mt_rand()  返回一个0~mt_getrandmax()之间的随机数
 mt_rand(min, max)  返回一个min~max之间的随机数
 pi()  圆周率π
 sin(n)  
 cos(n)  
 tan(n)  
 is_nan(n)  n是不是数值
 自定义函数

# TODO: 整理此处的内容

 函数定义

和js一样会提前提取函数声明, 故没有顺序

function 函数名(a1, a2, ...) {
...
return ...;
}
 参数的省略与初始值

注: 带初始值的参数后面的参数都要带初始值

function 函数名(a1, a2, ..., ar1=..., ar2=..., ...) {
...
}
 动态长度参数

参数名前带 ... , 此参数及后面的作为数组传入此

function 函数名(a1, a2, ..., ...b) {
...

● 获取参数信息

 func_get_args()  获取参数的数组
 func_num_args()  获取参数的个数
 func_get_arg()  获取指定的参数
 指定参数和返回值的类型
function 函数名(类型 参数1, 类型 参数2, ...):返回值的类型 {
...
}

● 可以指定的类型

 array  数组
 callable  回调函数
 bool  布尔值
 float  浮点数(float, double, real)
 int  整数
 string  字符串
 类名/接口名  指定的类的实例
 self  实例自身

● 可以省略返回值类型, 也可以参数里混搭不指定类型的

 传值与传指针

传指针的可以改变自身

&参数名

function sample($a, &$b) {...}
 函数指针

函数名的字符串

确认是否存在此函数, 用 function_exist()

 无名函数
function (...) use(...) {
...
}

● 用use来声明使用的外部变量

● use内的值在函数定义时确定, 不论外部怎么变use里都不变

 变量的有效域 
 变量的有效域  所在的代码块
 内部使用全局变量
global 全局变量名

"this is global";
function sample(int $a, float $b, $c):bool {
global $a;
echo $a;
return "sa";
}
 静态变量
static 变量名;
 动态生成变量 

双重$, 用指定变量的值来命名变量名

$$sample

$color = "red";
$$color = 1; // => $red = 1
字符串
   
   
   
   
数组
   
   
   
   
面向对象
 类的定义
 类定义
class 类名 {
// properties
public const 常量 = ...;
public 变量 = ...; // methods
public function 方法名(...) {
...
}
}

● 属性的初始值必须是值, 不能是式子

public $name = "a"."b"; // 不能这样
 生成实例
 生成实例
new 类名(...);
 获取属性, 呼出方法
$sample = new Sample();
$sample->$property;
$sample->method();
 $this

类方法内部获取类的属性

public function test() {
$a = $this.$b;
...
}

● 不带this的话只寻找本地属性, 故会报错

 构造函数
function __construct(...) {
...
}
 类文件与读取文件
 include(path)  遇到读取错误也会继续进行下去
 include_once(path)  且只读一次
 require(path)  遇到读取错误会抛出错误
 require_once(path)

且只读一次

实际都用这个

 静态变量, 静态方法
 声明
public static $version = "1.0.1";
public static function check_version(...) {...}
 接入
 自身类与实例处
self::类属性
self::类方法(...)

self::$version;
self::check_version(self::$version);
 其他类呼出
类名::类属性
类名::类方法(...)
   
 范围修饰符
 public  我的战车随时出发
 protected  此类和子类才能读写
 private  只有此类内部才能读写
   
 类的继承 
 类继承
class 子类 extends 父类 {
...
}
 构造函数 

父类的构造函数 parent::__construct(...)

function __construct(...) {
parent::__construct(...);
...
}
 重载 

直接重新定义原来的函数即可...

 final

禁止继承/重载

final class ...
final function ...
 trait
 定义
trait 名 {
// properties
// methods
}
 用法
use trait1, trait2, ...;

如果是外部文件里的, 要require_one(path)

 解决命名冲突

insteadof

# TODO 查查这里

 给方法增加名称

as

use aT, bT {
aT::hello as at_hello;
bT::hello as bt_hello;
aT::hello insteadof bT
}
 接口
 接口
interface 名 extends 父接口名 {
const 常数=值;
function 函数名(...);
}
 采用接口
class 名 extends 父类 implements n1, n2, ... {
...
}
 抽象类 
 定义
abstract class 名 {
abstract function 名(...);
...
// 抽象类内部功能的实现
...
}
 继承抽象类并实现方法
class 名 extends 抽象类名 {
...
function 抽象函数(...) {...}
// 此类自身的功能实现
...
}
   
表单基础
   
   
   
   
表单例
   
   
   
   
session
   
   
   
   
文件读写
   
   
   
   

[WIP]php入門的更多相关文章

  1. 依賴注入入門——Unity(二)

    參考博客文章http://www.cnblogs.com/kebixisimba/category/130432.html http://www.cnblogs.com/qqlin/tag/Unity ...

  2. GOOGLE搜索從入門到精通V4.0

    1,前言2,摘要3,如何使用本文4,Google簡介5,搜索入門6,初階搜索 6.1,搜索結果要求包含兩個及兩個以上關鍵字 6.2,搜索結果要求不包含某些特定資訊 6.3,搜索結果至少包含多個關鍵字中 ...

  3. Flask從入門到入土(三)——模板

    模板是一個包含響應文本的文件,其中包含佔位變量表示的動態部分,其具體值只是請求上下文中才能知道.使用真實值替換變量,再返回最終得到的響應字符串,這一過程稱爲渲染.爲了渲染模板,Flask使用了一個名爲 ...

  4. Windows PowerShell 入門(7)-関数編2

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...

  5. Windows PowerShell 入門(3)-スクリプト編

    これまでの記事 Windows PowerShell 入門(1)-基本操作編 Windows PowerShell 入門(2)-基本操作編 2 対象読者 Windows PowerShellでコマンド ...

  6. Windows PowerShell 入門(2)-基本操作編 2

    前回に引き続きMicrosoftが提供している新しいシェル.Windows Power Shellの基本操作方法を学びます.基本操作編第2弾の今回は.パイプの使用方法を中心としたコマンドレットの操作方 ...

  7. Delphi APP 開發入門(四)簡易手電筒

    Delphi APP 開發入門(四)簡易手電筒 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:32 ...

  8. Delphi APP 開發入門(六)Object Pascal 語法初探

    Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_sh ...

  9. Delphi APP 開發入門(五)GPS 定位功能

    Delphi APP 開發入門(五)GPS 定位功能 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數 ...

随机推荐

  1. CSS3制作分步注册表单

    这个DEMO是使用CSS3制作的一个分步注册表单,每个input对应的是每一步,在表单得到焦点时,对应的step也会进行对应的改变.不过这个效果是使用js代码来实现,但整个表单的外观是由CSS3来完成 ...

  2. 异步刷新页面的前进与后退的实现--pushState replaceState

    实现目标 页面的跳转(前进后退,点击等)不重新请求页面 页面URL与页面展现内容一致(符合人们对传统网页的认识) 在不支持的浏览器下降级成传统网页的方式 使用到的API history.state 当 ...

  3. Web中常用字体介绍

    1.在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的@font-face属性来引入特殊的浏览器加载字体. 浏览器中展示网页文字内容时,文字字体都会按照设计 ...

  4. linux命令学习笔记(17):whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和 源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度 ...

  5. URAL1517Freedom of Choice(后缀数组)

    Background Before Albanian people could bear with the freedom of speech (this story is fully describ ...

  6. bzoj 1113 海报pla

    Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值 ...

  7. 【LeetCode】137. Single Number II

    题目: Given an array of integers, every element appears three times except for one. Find that single o ...

  8. java代码throws异常

    总结:抛出异常 package com.ds; //异常捕获 public class fdsg { private static void throwException() { try { Stri ...

  9. js实现翻牌效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. linux strace-跟踪进程的系统调用或是信号产生情况,lstrace-跟踪己丑年调用库函数情况,进程跟踪调试命令

    本工具可以用来做大多数排除,比如mount一个NFS,很慢,找不出原因,我们可以使用strace命令来跟中mount这个经常所有的调用过程. strace 命令是一种强大的工具,它能够显示所有由用户空 ...