PHP开发笔记

基础知识:

变量名必须通过$符号标识

变量的命名规范:

1、变量名必须以字母或下划线 “_”开头,如”$_name”,”$name” ,”$name2”等,但是”$9name”是不对的。

2、变量名只能由字母、数字、以及“_”组成,还能包含汉字。如”$_qq”,”$qq308” ,”$my_apple”,“比如"$name我等”,但是”$name*”是不对的。

3、变量名不允许包含空格。当变量名由多个单词组成,建议使用“_”进行分隔(比如 $my_apple),俗称下划线法,或者以大写字母开头比如 $myApple,俗称骆驼式命名法(也称驼峰命名法

memory_get_usage() 获取当前PHP占用内存

var_dump();获取变量类型

echo("true")结果为1//布尔型变量输出的时候是特殊的,true为1,false什么也不输出

整型:

整型(integer):类似于常见的整数。它可以用十进制、八进制、十六进制指定。十进制就是日常使用的数字;八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦);十六进制,数字前必须加“0x”

字符串型:

1.字符串型可以用三种方法定义:单引号形式、双引号形式和Heredoc结构形式

2.使用字符串的时候难免用到引号之间的嵌套,可以使用转义符“\”

3.当双引号中包含变量时,变量会与双引号中的内容连接在一起;当单引号中包含变量时,变量会被当做字符串输出

4.使用定界符表示字符串(<<<),接着在“<<<“之后提供一个标识符GOD(可以自己定义),然后是字符串,最后以提供的这个标识符结束字符串

特殊类型:

资源(resource):资源是由专门的函数来建立和使用的,例如打开文件、数据连接、图形画布。我们可以对资源进行操作(创建、使用和释放)

举例如下:

<?php
$file=fopen("f.txt","r");   //打开文件
$con=mysql_connect("localhost","root","root");  //连接数据库
$img=imagecreate(100,100);//图形画布
?>

$a = fopen("打开文件根目录","r");//打开文件$b = fgets($a);//读取文件中的内容$c = fclose($a);//关闭文件

第二种特殊类型:NULL(NULL):NULL是空类型,对大小写不敏感,NULL类型只有一个取值,表示一个变量没有值,当被赋值为NULL,或者尚未被赋值,或者被unset()撤销定义,这三种情况下变量被认为为NULL

常量:使用define定义,带有三个参数

bool define(string $constant_name, mixed $value[, $case_sensitive = true])
第一个参数“constant_name”为必选参数,常量名称,即标志符,常量的命名规则与变量的一致,但是要注意哦,它可不带美元符号哦。第二个参数“value”为必选参数,它是常量的值。第三个参数“case_sensitive”为可选参数,指定是否大小写敏感,设定为true表示不敏感,一般不指定第三个参数的情况下,默认第三个参数的值为false

系统常量(举例):

1.__FILE__ :php程序文件名。它可以帮助我们获取当前文件在服务器的物理位置。

2.__LINE__ :PHP程序文件行数。它可以告诉我们,当前代码在第几行。

3.PHP_VERSION:当前解析器的版本号。它可以告诉我们当前PHP解析器的版本号,我们可以提前知道我们的PHP代码是否可被该PHP解析器解析。

4.PHP_OS:执行当前PHP版本的操作系统名称。它可以告诉我们服务器所用的操作系统名称,我们可以根据该操作系统优化我们的代码

获取常量值的有两种方法取值:

1.第一种是使用常量名直接获取值

2.第二种使用constant()函数:mixed constant(string constant_name)

defined(string constants_name)获取当前常量名是否被定义,返回值为布尔型

运算符:

算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符

赋值运算符(=和&):

第一个是把右边表达式的值赋给左边的运算数。它将右边表达式值复制一份,交给左边的运算数。换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中。

第二个是引用赋值,意味着两个变量都指向同一个数据。它将使两个变量共享一块内存,如果这个内存存储的数据变了,那么两个变量的值都会发生变化

例如$c = &$a;

比较运算符(!===,===(全等于,要求值与类型都一样),<>(不等于))

逻辑运算符(与,或都有两种,and,or,&&,||,异或Xor(有且仅有一个值为真才为真))!!!优先级不同

连接符:.和.=  前者是将两个字符串连起来,后者是直接在前面字符串后加上一个字符串

错误控制运算符“@”:对于一些可能会在运行过程中出错的表达式时,我们不希望出错的时候给客户显示错误信息,这样对用户不友好。于是,可以将@放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉

!!!需要注意的是:错误控制前缀“@”不会屏蔽解析错误的信息,不能把它放在函数或类的定义之前,也不能用于条件结构例如if和foreach等

PHP(foreach循环分两种:

1.只取值,不取下标

foreach (数组 as 值){     }

2.同时取下标和值

foreach (数组 as 下标 => 值)

进阶知识:

数组的定义: $arr= array();//表示创建一个空数组,并把创建的空数组赋值给变量$arr。

1.索引数组:$fruit = array("苹果","香蕉","菠萝"); 注意数组的键是从0开始的。可以使用print_r($fruit);语句输出数组键及对应的值

  第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,索引数组中,中括号内的键一定是整数。比如,$arr[0]=‘苹果‘;

  第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,索引数组中,键一定是整数。比如,array(‘0‘=>‘苹果‘);

  第三种:用array()创建一个空数组,直接在数组里用英文的单引号或者英文的双引号"赋值,数组会默认建立从0开始的整数的键。比如array(‘苹果‘);这个数组相当于array(‘0‘=>‘苹果‘);

2.关联数组:关联数组是指数组的键是字符串的数组

  第一种:用数组变量的名字后面跟一个中括号的方式赋值,当然,关联数组中,中括号内的键一定是字符串。比如,$arr[‘apple‘]=‘苹果‘;

  第二种:用array()创建一个空数组,使用=>符号来分隔键和值,左侧表示键,右侧表示值。当然,关联数组中,键一定是字符串。比如,array(‘apple‘=>‘苹果‘);

自定义函数:

  1.使用关键字“function”开始
  2.函数名可以是字母或下划线开头:function name()
  3.在大括号中编写函数体

可变函数:可变函数的调用方法为变量名加括号。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

类和对象:

class Car {
    $name = ‘汽车‘;
    function getName() {
        return $this->name;
    }
}

$car = new Car();

echo $car->getName();

//也可以采用变量来创建

$className = ‘Car‘;

$car = new $className();

echo $car->getName();

类的属性:属性默认都为public,外部可以访问。一般通过->对象操作符来访问对象的属性或者方法,对于静态属性则使用::双冒号进行访问

类的方法:使用关键字static修饰的,称之为静态方法,静态方法不需要实例化对象,可以通过类名直接调用,操作符为双冒号::

构造函数和析构函数(一个在对象被创建时自动调用,一个在对象被销毁时自动被调用)

//增加构造函数与析构函数
function __construct(){
print "构造函数被调用\n";
}
function __destruct(){
print "析构函数被调用\n";
}

静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。静态属性不允许对象使用->操作符调用

class Car {
    private static $speed = 10;

    public static function getSpeed() {
        return self::$speed;
    }
}
echo Car::getSpeed();  //调用静态方法

静态方法也可以通过变量来进行动态调用

$func = ‘getSpeed‘;

$className = ‘Car‘;

echo $className::$func(); //动态调用静态方法重载

对象之重载:

PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。

属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性

clone的作用是拷贝.如$b clone $a.相当于 $b单独开辟了个内存空间,但内容和$a是一模一样的.. 若是 $b=$a,相当于两个指针指向同一个空间.. 即 === 成立

$str = serialize($a); //对象序列化成字符串

$c = unserialize($str); //反序列化为对象

字符串:

单引号与双引号的区别:双引号里面可以识别出变量名,单引号则不行

去掉字符串首尾的空格:

PHP中有三个函数可以去掉字符串的空格

1.trim去除一个字符串两端空格。
2.rtrim是去除一个字符串右部空格,其中的r是right的缩写。
3.ltrim是去除一个字符串左部空格,其中的l是left的缩写

PHP中直接获取英文字符串的长度的函数是strlen(),用mb_strlen()函数获取字符串中中文长度。

1.英文字符串的截取函数substr()

函数说明:substr(字符串变量,开始截取的位置,截取个数)

2.中文字符串的截取函数mb_substr()

函数说明:mb_substr(字符串变量,开始截取的位置,截取个数, 网页编码)

PHP的查找字符串函数strpos():函数说明:strpos(要处理的字符串, 要定位的字符串, 定位的起始位置[可选])

替换字符串,我们需要用到PHP的替换函数str_replace()

函数说明:str_replace(要查找的字符串, 要替换的字符串, 被搜索的字符串, 替换进行计数[可选])

们需要用到PHP的格式化字符串函数sprintf()

函数说明:sprintf(格式, 要转化的字符串)

返回:格式化好的字符串

例子:

$str = ‘99.9‘;
$result = sprintf(‘%01.2f‘, $str);
echo $result;//结果显示99.90

字符串的合并和分割

1.合并

php字符串合并函数implode()函数说明:implode(分隔符[可选], 数组),返回值:把数组元素组合为一个字符串

举例:

$arr = array(‘Hello‘, ‘World!‘);
$result = implode(‘‘, $arr);
print_r($result);//结果显示Hello World!

2.分割

php字符串分隔函数explode(),函数说明:explode(分隔符[可选], 字符串),返回值:函数返回由字符串组成的数组

举例:

$str = ‘apple,banana‘;
$result = explode(‘,‘, $str);
print_r($result);//结果显示array(‘apple‘,‘banana‘)

php字符串转义函数addslashes(),函数说明:用于对特殊字符加上转义字符,返回一个字符串

Cookie

Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端

Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个:

1.name( Cookie名)可以通过$_COOKIE[‘name‘] 进行访问
2.value(Cookie的值)
3.expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效
4.path(有效路径)如果路径设置为‘/‘,则整个网站都有效
5.domain(有效域)默认整个域名都有效,如果设置了‘www.imooc.com‘,则只在www子域中有效

PHP中删除cookie也是采用setcookie函数来实现:setcookie(‘test‘, ‘‘, time()-1);

Session

在PHP中使用session非常简单,先执行session_start方法开启session,然后通过全局变量$_SESSION进行session的读写

使用Session或者Cookie存储用户信息:

<?php
session_start();
//假设用户登录成功获得了以下用户数据
$userinfo = array(
‘uid‘ => 10000,
‘name‘ => ‘spark‘,
‘email‘ => ‘[email protected]‘,
‘sex‘ => ‘man‘,
‘age‘ => ‘18‘
);
header("content-type:text/html; charset=utf-8");

/* 将用户信息保存到session中 */
$_SESSION[‘uid‘] = $userinfo[‘uid‘];
$_SESSION[‘name‘] = $userinfo[‘name‘];
$_SESSION[‘userinfo‘] = $userinfo;

//* 将用户数据保存到cookie中的一个简单方法 */
$secureKey = ‘imooc‘; //加密密钥
$str = serialize($userinfo); //将用户信息序列化
//用户信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));
//用户信息加密后
//将加密后的用户数据存储到cookie中
setcookie(‘userinfo‘, $str);

//当需要使用时进行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密后的用户信息:<br>";
print_r($uinfo);

最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中

UNIX 时间戳(英文叫做:timestamp)它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。

PHP提供了内置函数strtotime实现功能:获取某个日期的时间戳,或获取某个时间的时间戳:strtotime(要解析的时间字符串, 计算返回值的时间戳【默认是当前的时间,可选】)

GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新的图片

Exception(异常处理)具有几个基本属性与方法,其中包括了:

message 异常消息内容
code 异常代码
file 抛出异常的文件名
line 抛出异常在该文件的行数

PHP数据库扩展:

1.mysql扩展进行数据库连接的方法:

$link = mysql_connect(‘mysql_host‘, ‘mysql_user‘, ‘mysql_password‘);

2.mysqli扩展:

$link = mysqli_connect(‘mysql_host‘, ‘mysql_user‘, ‘mysql_password‘);

3.PDO扩展

$dsn = ‘mysql:dbname=testdb;host=127.0.0.1‘;
$user = ‘dbuser‘;
$password = ‘dbpass‘;
$dbh = new PDO($dsn, $user, $password);
时间: 2024-10-14 12:53:25

PHP开发笔记的相关文章

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

微信订阅号开发笔记(二)

微信开发的流程其实很简单 o(∩_∩)o 哈哈!在微信网站的编辑操作 额,就不说了.虽然有人问过.下面是我的微信开发过程,简单记录下. 成为开发者 材料:1.自己的服务器资源,百度的BAE,新浪的SAE都不错. 2.懂那么点编程语言. 3.注册微信公众号. 上面的都有了之后,就可以自己动手开发了.哇咔咔,好兴奋.有木有. 在登录进去之后,怎么成为开发者?不知道,自己看去. 开始coding吧. 1.验证 if (! empty ( $_GET ['echostr'] ) && ! empt

微信订阅号开发笔记(三)

1.接收语音识别结果 if($msgType=="voice"){ //收到语音消息 //MediaId 语音消息媒体id,可以调用多媒体文件下载接口拉取数据. //Format 语音格式,如amr,speex等 $format = $postObj->Format; $mediaId = $postObj->MediaId; //开通语音识别功能,用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段. //注:由于客户端缓

微信订阅号开发笔记(四)

1.创建菜单 //创建菜单 public function createMenu(){ $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="; $url.=$this->getacctoken(); //目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字, //二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单

Swift开发笔记

Swift开发笔记(一) 刚开始接触XCode时,整个操作逻辑与Android Studio.Visual Studio等是完全不同的,因此本文围绕IOS中控件的设置.事件的注册来简单的了解IOS开发 1.新建一个Xcode项目,项目目录大致如图: 2.在Main.storyboard添加控件 首先要显示右侧的工具栏(Utilities),之后选择显示Object Library,就可以找到常用的一些控件了,然后添加几个控件到界面中 3.将控件和ViewController进行关联 此时要将Ed

张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )

所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色的矩形用来表示 ListView 的选中.如下图 但怎样通过 Xamarin.Forms ,将这一样式的汉堡菜单带入到 Android 与 iOS 中呢? 一.大纲-细节模式简介 讲代码前首先来说说这种导航模式,官方称"大纲-细节模式"(MasterDetail).左侧的汉堡菜单称为&qu

web前端开发笔记(2)

web前端开发笔记(1) 一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必须闭合. 页面中不要用 进行缩进,如需缩进,用css控制. html标签使用必须语义化. 要为img标签填写alt和title属性. 二.HTML静态页面出现中文乱码如何解决? 引入<meta charset="UTF-8"> 三.通常情况下块属性标签和

[APP] Android 开发笔记 003

接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genkey -v -keystore "release.keystore" -alias "release" -keyalg "RSA" -validity "10000" 这里需要注意的是: -keystore "relea

Web前端开发笔记整理

web前端开发笔记: 1.web前端之html_day1 2.web前端之html_day2 3.web前端之css_day1