PHP绘本的 游览器
《PHP绘本》第二版:乐趣无限的制作Web应用的九扇全新大门
出版社:翔泳社
发售日期:2017年4月13日
基本的编程知识
自增运算符和自减运算符
++(递增运算符)
–(递减运算符)
请注意,前置和后置可能会导致输出结果不同。
函数
函数是处理提供的值并输出结果的东西。
处理的目标是参数(参数),结果的值是返回值(返回值)。
如此。
回调函数 (huí shù)
用一个函数名作为参数传递,并调用该函数本身。
当想要在函数的参数中使用另一个函数时使用。
匿名函数(闭包)
省略了函数名的内容。
function Hello(){
print "こんにちは";
}
function callfunc(callable $f){
$f();
print"○○さん";
}
callfunc("Hello");
结果
你好,〇〇先生
方便的函数
isset($a):変数に値がセットされているかを判定する。
empty($a):変数が存在しないとき、変数の値が0のとき、falseのときにtrueを返す。
unset($a):変数がセットされてない状態にする。
排列
箱子的排列顺序
array=[1,2,3]
array(0=>1,1=>2,2=>3)
以上两个具有相同的意思。
$a="cat"
echo $a[0]
【结果】c
文件读取
require
制限なしエラーメッセージが表示される。処理は中止。require_once
1回のみ(2回目はスキップ)エラーメッセージが表示される。処理は中止。include
制限なし警告メッセージ表示。処理は続行。include_once
一回のみ(2回目はスキップ)警告メッセージ表示。処理は続行。变量
变量的作用域
变量的作用范围。
局部变量:仅在定义变量的函数内部使用。
全局变量:在变量前加上global关键字。适用于整个PHP脚本。
静态函数
在调用函数时,局部变量会被初始化,但将其变为静态变量后,之前调用时的值将被保留。
匿名函数(闭包)
将函数名省略的内容。将其赋值给一个变量,稍后可以调用。
正則表達式
POSIX扩展正则表达式
PHP5.3.0 被标记为不推荐使用,并在PHP7中被删除。
只需要唯一的選項,中文本地化地改述如下:Perl兼容的正则表达式
preg系列的函数可以使用。
preg_match()函数:如果目标字符串匹配模式,则返回1,如果不匹配,则返回0。还可以将匹配的部分提取出来并存储为数组。
preg_match(“/[A-Z]{3}/”,”Hello PHP.”,$array)`
返回的值是0,$array[0]中存储了”PHP”。
preg_replace()函数:进行替换。
preg_split()函数:按照正则表达式匹配的位置将字符串分割。
与文字相关的函数
strtolower():将大写字母转换为小写字母。
strtoupper:将小写字母转换为大写字母。
trim():删除空格。
explode(分隔符,字符串):将字符串按照分隔符进行切割,并将切割后的部分存储在数组中。返回值为数组的值。
implode(连接符,数组):将数组中的元素以连接符进行连接。
在HTML中使用的函数
strip_tags(対象の文字列、消したいタグ):去除标签。
nl2br():在换行符前插入HTML换行符。
与互联网的协调配合
会话
服务器内存空间。
饼干
客户
会话管理
文件处理
基本处理流程
1. 打开文件$fp=fopen(文件名,”模式”),若文件打开成功,则将文件信息存储在$fp中。
2. 写入内容fputs($fp,”写入的字符串”,字节数)
3. 关闭文件fclose($fp)
4. 删除文件unlink(“文件名”)
数据库
关系型数据库管理系统(RDBMS)是一种软件。
SQL是用于命令关系型数据库管理系统的语言。
SQLite(=RDBMS)在PHP5.3.0及更高版本中已经作为标准组件内置进去。
最基本的操作
-
- 创建数据库$新数据库名称=new SQLite3(“数据库文件名”)
写操作的SQL语句$query=SQL语句
执行$result=$创建的数据库名称->exec($query)
断开连接$数据库名称->close()
只需要一种选择,在中文里释义:赠品。
发送电子邮件
编辑 php.ini 文件。
修改 php.ini 配置。
SMTP = mail.XXX.co.jp
sendmail_from = 送信元アドレス
使用mb_send_mail()函数在日语中发送邮件非常方便。
发送成功返回true,发送失败返回false。
mb_send_mail(“收件人邮件地址”,”主题”,”正文”)
命名空间
类,接口,函数,常量的组合。
定义命名空间后,即使在库中命名冲突也能够进行区分。
命名空间的定义
在PHP代码的开头写上。
namespace 名字空间A 或 namespace dir¥名字空间A
引用
名字空间A¥函数()
每次指定命名空间都很麻烦,所以可以使用use来导入。
使用”dir/命名空间A”并保留,之后仅需调用函数名即可。
生成器
可以从函数中依次取出值的机制。
班级
有许多有共同要素(属性/成员)且具有多种类型的事物。
例如)裙子
裙子具有共同要素”名称”和”面料”。
↓用代码表示
class Dress{
public $name;//ドレスは「名前」をもつ
public $material;//ドレスは「生地」の種類が存在する。
}
为了Ruby,制作一个新的箱子来存放详细信息。
通过使用关键词”new”创建的变量(在这种情况下是$Ruby),被称为对象,并且类型将成为对象类型。
$Ruby = 一件新裙子。
“Ruby”的名字是“红宝石”,而“生地”是丝绸。
$Ruby->$name = "ruby";
$Ruby->$material = "silk";
在引用对象的变量(成员属性的值)时使用”->”。
class Dress{
public $name;//ドレスは「名前」をもつ
public $material;//ドレスは「生地」の種類が存在する。
}
$Ruby=new Dress;
$Ruby->$name = "ruby";
$Ruby->$material = "silk";
$Diamond=new Dress;
$Diamond->$name = "diamond";
$Diamond->$material = "cotton";
$Gold=new Dress;
$Gold->$name = "gold";
$Gold->$material = "hoge";
print
$Ruby->$name."の素材は".$Ruby->$material;
$Diamond->$name."の素材は".$Diamond->$material;
$Gold->$name."の素材は".$Gold->$material;
可以像下面这样,逐行书写:
class Dress{
public $name;//ドレスは「名前」をもつ
public $material;//ドレスは「生地」の種類が存在する。
public function printdate(){ //表示する関数
print $this->$name."の素材は".$this->$material;
}
}
$Ruby = new Dress;
$Ruby->$name = "ruby";
$Ruby->$material = "silk";
$Diamond=new Dress;
$Diamond->$name = "diamond";
$Diamond->$material = "cotton";
$Gold=new Dress;
$Gold->$name = "gold";
$Gold->$material = "hoge";
$Ruby->printdate();//クラスの中の関数を呼び出す
$Diamond->printdate();
$Gols->printdate();
在这种情况下,称在类中被创建的函数为方法,并且在使用同一类中的成员时要使用$this。
构造函数和析构函数
构造函数:当对象被实例化时调用的方法。__construct()
析构函数:当对象被销毁时调用的方法。__destruct
用于进行清理工作。
class Piyo{
public $a;
public $b;
public funtion __construct($n,$m){
$this->a = $n;
$tshi->b = $m;
}
}
$deko = new Piyo($nに入れたい値,$mに入れたい値);
继承类
我想在班级A中进行某种改变,但如果使用其他班级A会发生变化就会困扰。
当想要以修改原本的班级A来创建班级B时,就需要继承班级A。
通过继承,B的成员也可以直接使用。但当想要重新定义时,可以使用父类的方法和成员名称进行覆写(override)。但是,如果方法前面标有final,就无法进行覆写。
class B extends A{
アレンジしたいことをかく。
}
例外
将例外功能封装成类
梨/梨壳(pear/pecl)是用于编写扩展模块和应用程序的库。