创建: 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. Python基础之元组操作

    元组的常用操作包括但不限于以下操作: 元组的索引,计数等 这里将对列表的内置操作方法进行总结归纳,重点是以示例的方式进行展示. 使用type获取创建对象的类 type(tuple) 使用dir获取类的 ...

  2. g++能过,c++过不了

    可能原因: 1.在递归的时候,递归函数中忘记加返回return.(详见Wrong Answer,Memory Limit Exceeded) 代码1:错误 g++--------accepted c+ ...

  3. Java8中聚合操作collect、reduce方法详解

    Stream的基本概念 Stream和集合的区别: Stream不会自己存储元素.元素储存在底层集合或者根据需要产生.Stream操作符不会改变源对象.相反,它会返回一个持有结果的新的Stream.3 ...

  4. CSS cursor 属性--css html 鼠标手型,鼠标形状,鼠标效果,样式

    css鼠标手型cursor中hand与pointer Example:CSS鼠标手型效果 <a href="#" style="cursor:hand"& ...

  5. codeforces 650 C. Watchmen(数学公式)

    C. Watchmen time limit per test 3 seconds memory limit per test 256 megabytes input standard input o ...

  6. Java 网络通信(TCP/UDP)

    1.InetAdress类 与  Socket类  >InetAdress  >Socket 2.TCP/IP协议簇  客户端: 创建 Socket:根据指定服务端的 IP 地址或端口号构 ...

  7. [BZOJ1396&2865]识别子串

    bzoj1396 bzoj2865 dbzoj1396 dbzoj2865 题面 XX在进行字符串研究的时候,遇到了一个十分棘手的问题. 在这个问题中,给定一个字符串\(S\),与一个整数\(K\), ...

  8. windows7下c++11环境搭建

    1.安装codeblocks 13.12 2.下载安装tdm-gcc-4.8.1-3 3.配置coldblocks的编译器(settings->compiler->compiler set ...

  9. HDU1257(简单DP)

    最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  10. Spring boot 学习一:认识Spring boot

    什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...