变量
变量命名 $开头 $a = 1 ; 输出可以用echo 逗号分隔 echo $a, $b; echo $a. $A; 都可以 C语言命名一致就行
注释
和 C 的注释规则一致
数据类型
布尔 true false 不带小数点,整形 带小数点,浮点型 字符串 单引号直接输出 双引号可以应用变量
$a = 'nihao';
$aa = 'nihao $a';
$aaa = "nihao $a";
换行是echo ‘ ’; php全用单引号,html全用双引号
乱码转换为中文
header('content-type:text/html;charset=utf-8');
停止程序
die();
永久转换
settype($aim, typeval());
可变变量
把一个变量作为另外一个变量使用
$name = 'tom';
$tom = '汤姆';
echo $name.'<br />';
echo $tom.'<br />';
echo $$name;
$后面只要加上字符串就可以成为一个变量名
查看变量类型
var_dump(expr);
预定义变量
系统自带变量
const 常量
不被篡改
define('name', 'tom');
运算符
字符串连接符
echo $a.$b;
其中的 + - * / % 和 python 完全一致 能用 += 语法 支持 ++ 和 – 运算 其中的 == 只是显示的东西一致,=== 表示的是完全相同 != 和 !== 完全一致 比较运算符号 >= 和 <=
逻辑运算符
|| 和 && 和 ! 三元运算符 (expr1)?(expr2):(expr3);
流程控制
选择结构
if () {
} else if () {
} else {
}
switch 基本不需要大括号
switch () {
case '':
echo ' ';
break;
case '':
echo '';
break
default:
break;
}
while
$a = 1;
while ($a < 10) {
echo $a.'<br />';
$a ++ ;
}
for 循环
$a = 100;
for ($i = 0; $i <= $a; $i ++ ) {
echo $i.'<br />';
}
在双引号中使用变量可以使用{}
for ($j = 1; $j <= 9; $j ++ ) {
for ($i = 1; $i < $j; $i ++ ) {
echo "{$i}x{$j}=".($i * $j).' ';
}
echo '<br />';
}
数组
声明
$arr = array(1,2,3,4,5);
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;
var_dump($arr);
使用 $arr[] = 直接在后面添加
字典
$arr = ['name'=>'tom', 'name'=>'james'];
echo $arr['name'];
遍历
$arr = [0=>1,1=>2,2=>3];
for ($i = 0; $i < count($arr); $i ++ ) {
}
其中的 count 是计算数组的长度 foreach 取出字典的键名和值
$arr = [0=>1,1=>2,2=>3];
foreach($arr as $a => $b) {
echo $a.' '.$b.'<br />';
}
二维数组
数组的数组
$arr1 = [1, 2, 3];
$arr2 = [2, 3, 4];
$arr3 = [$arr1, $arr2];
遍历二维数组
$arr1 = [1, 2, 3];
$arr2 = [2, 3, 4];
$arr = [$arr1, $arr2];
for ($i = 0; $i < count($arr); $i ++ ) {
for ($j = 0; $j < count($arr[$i]); $j ++ ) {
echo $arr[$i][$j].'<br />';
}
}
函数
function functionName(函数参数) {
}
不需要标注数据类型
函数类型
默认参数
function weike($name = '猪') {
return '烤'.$name.'<br />';
}
$chicken = weike();
echo $chicken;
引用变量
$a = 1;
function test(&$b) {
$b = 2;
}
test($a);
echo $a;
使用 & 引用符号
变量作用域
脚本中的是全局变量 函数内的是局部变量 如果想要在函数中使用全局变量需要使用 global 关键字
$a = 1;
function test() {
global $a;
echo $a;
}
test();
也可以使用 $GLOBAL,它包含了全局变量域中的全部变量
$a = $GLOBAL['a'];
函数内部的局部变量设置为全局变量,可以在脚本文件中运行
function test() {
global $a;
$a = 2;
}
test();
echo $a;
特殊函数
递归函数:自己调用自己
function test($a) {
if ($a == 100) {
return;
} else {
echo $a.'<br />';
$a ++ ;
}
test($a);
}
test(1);
static $i 的作用和 const 限定的作用相似
可变函数,可以变换函数名,函数名加上括号就是调用
function test() {
echo 'hah';
}
$a = 'test';
$a();
匿名函数
$name = function () {
echo 'hah';
};
$name();
相当于将函数交给变量,也是要定义,特殊赋值。
预定义函数
is_null() 判断是否是空 time() 返回时间 include ‘index.php’; 和 import 很像
面向对象
类的定义
class Dog {
}
class 是标识符,类名后面没有小括号
class Dog {
public $name = 'name';
private $score = '100';
public function eat() {
echo '啃骨头';
}
}
必须有权限修饰符 public 和 private 实例化必须有new
$dog = new Dog();
调用属性的时候要使用 -> 而不是 .
echo $dog->name;
调用方法也使用->
修饰符
public 外界可以调用,protect 和 private 外界无法访问  三种权限
构造与析构函数
[修饰符] funciotn __construct() {
}
this 在 class 中的使用
class Aclass {
public $color;
public function __construct($name) {
$this->color = $name;
echo "我是构造函数".'<br />';
}
}
$a = new Aclass('哈哈');
echo $a->color;
析构函数是做善后工作的,所有任务完成后,执行析构函数。
class Aclass {
public $color;
public function __construct($name) {
$this->color = $name;
echo "我是构造函数".'<br />';
}
public function __destruct() {
echo '最后执行的是析构函数'.'<br />';
}
}
魔术方法
双下划綫一定是魔术方法,不需要手动调用,增强健壮性 __get 与 __set ,不可访问数值的控制
set(arg1, arg2);
get(arg);
set 必须两个参数, get 一定是一个参数
class Person {
protected $age;
private $money;
public function __get($name) {
var_dump($name);
echo '<be />';
}
public function __set($name, $value) {
var_dump($name);
echo '<br />';
var_dump($value);
echo '<br />';
}
}
$obj = new Person(0, 0);
$obj->age = 1;
$obj->money = 1000;
get 直接一指就行, 先一指再给值就是 set 方法
静态成员
class 中的 static 值要被引用了,永远都只是这一个对象。 使用方法
修饰符 static 名字 [=属性]
访问静态属性使用类名加上::
class Person {
public static $age = 18;
public static function test() {
echo "我是静态方法".'<br />';
}
}
Person::$age;
内部访问静态变量,使用self::类名 的方式
define
define(name, value);
const
类常量定义和调用 定义用 const 调用要有名字区域
class Person {
const NAMES = 'james';
public static function get() {
echo self::NAMES;
}
}
echo Person::NAMES.'<br />';
Person::get();
继承
从已有的类继承旧的信息,派生类 关键字是 extends
class new extends old {
}
只能继承public
封装
干一件事情,封装到一个类中
接口
格式
interface AAname{
const NAME = 'TOM';
public static function test();
public function demo();
}
一定没有属性,一定是基类,没有方法体 抽象
abstract public function name([参数])
使用接口
interface AAname{
const NAME = 'TOM';
public static function test();
public function demo();
}
abstract class Person implements AAname {
public static function test() {
echo '静态测试';
}
public function qz() {
echo '葡萄';
}
}
命名空间
namespace hunan;
关键字namespace 用某个空间中的某个函数
use hunan\Person as P;
第二空间用第一空间的数据
namespace Hunan;
header('content-type:text/html;charset=utf-8');
class Person {
public function __construct() {
echo '我是hunan空间的';
echo '<br />';
}
}
const NAME = '我是hunan空间的';
function test() {
echo NAME;
echo '<br />';
}
namespace Csha;
use hunan\Person as P;
use const hunan\NAME;
use function Hunan\test;
namespace 一定要放在第一句 use 要用反斜杠 魔术函数
echo __NAMESPACE__;
如果命名空间使用异常,考虑是不是版本太低了。
子命名空间
命名空间中的命名空间
namespace Hunan;
class H {
public function __construct()
{
echo 'weike';
}
}
$h = '\Hunan\H';
$aa = new $h;
如果直接 new 命名空间,相当于直接调用了内容
文件系统
file_exists($path);
filesize($file);
$type = filetype($path);
$file = fopen("index.php", 'r+');
判断文件存在 判断文件大小 判断文件类型 打开文件
fwirte($file, $string);
文件写 操作文件输出内容
file_put_contents($file, $data);
解决phpMyAdmin无法登陆
解决办法
现在的mysql密码
Root@123
POD
php 连接数据库的接口
$type = 'mysql';
$host = 'localhost';
$dbname = 'wuliu';
$user = 'root';
$password = 'Root@123';
$dsn = "{$type}:host={$host};dbname={$dbname}";
$pdo = new PDO($dsn, $user, $password);
连接操作 POD(数据来源,用户名,密码)
|