php学习笔记(一)

PHP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。

1.环境搭建

1.Apache配置&命令行

 打开apache命令:sudo apachectl start
查看版本的命令:httpd -v
重新启动Apache服务:sudo apachectl restart
关闭Apache服务:sudo apachectl stop

启动后完Apache后,就可以到浏览器Safari的地址栏中输入localhost,如果出现It works!则说明,Apache已经开启成功。


image.png
  • 2.配置php
    Mac系统也是自带了php,那么我们只需要在Apache的配置文件中添加Apache对php的支持就可以了
$ php -v
PHP 5.6.28 (cli) (built: Dec  6 2016 12:38:54) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

编辑http.conf配置文件,命令为:sudo vim /etc/apache2/httpd.conf;
找到LoadModule php5_module libexec/apache2/libphp5.so去掉前面的#号就可以了
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule perl_module libexec/apache2/mod_perl.so

配置完后,重启下Apache,sudo apachectl restart。然后在终端输入命令open /Library/WebServer/Documents,此目录为Apache的目录,在此目录下我们新建一个测试文件(记为hello.php)来测试Apache是否和php关联好。<?php phpinfo(); ?>,记得文件的后缀名为.php,然后在浏览器Safari中输入localhost/hello,如果出现下面的页面,则说明关联成功,可以进入下一步了。如果不是,则需要检查哪一步错误,然后重新进行正确的配置。

image.png
  • 3.MySQL配置

MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

下载网址:http://dev.mysql.com/downloads/mysql/
需要将路径配置一下。
1、打开终端输入: pico .bash_profile; 回车
2、export PATH=$PATH:/usr/local/mysql/bin/将该路径添加到最后一行,保存退出即可。到此为止,MySQL的配置就差不多了。
workbench
常用MySQL图形化管理工具

2.php基础

PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。

特点:

  • 1、运行在服务器端:学会了PHP,就可以指挥服务器给你干活,甚至是搞破坏_(千万不能真这么做咯),WEB网站的大部分数据都是存储在服务器端的,PHP就是用来处理这些存储在服务器的数据的(功能强大吧)。

  • 2、跨平台:服务器可以是多种平台的服务器,比如Linux、Windows、Unix,你都可以指挥(不用怕只能指挥一种服务器啦吧)。

  • 3、脚本语言:它是通过编写脚本,也就是一行行的计算机指令(也可以理解为特定的英文单词),来指挥服务器来工作的,因此,在编写PHP的过程其实就是与老外(服务器成老外啦)交流的过程,交流的语言就是PHP。
    4、免费:免费使用(天下还真有免费的午餐)。

  • PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码

  • PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器

  • PHP 文件的默认文件扩展名是 ".php"

有两种在浏览器输出文本的基础指令:echo 和 print。

  • 语法
    PHP 脚本以 <?php 开始,以 ?> 结束,默认文件扩展名是 ".php"。
<?php echo "hello World" ?>
php变量:
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

PHP 有四种不同的变量作用域:

  • local局部变量
  • global全局变量:通过将关键字 GLOBAL 放在变量前该变量可以被确认为全局变量
  • static 静态变量:声明一个变量为静态只需将关键字 static 放在变量名前面
  • parameter函数参数

数据类型:
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

在php中字符串连接符是用点(.)来表示的,这一点比较特殊,其它语言中是用加号(+)来表示的,比如:JavaScirpt、Asp、C。

常量定义:

  • 常量前面没有必要写美元符号($),在变量前必须编写一个美元符号。
  • 常量只能用 define() 函数定义,而不能通过简单的赋值语句。
  • 常量可以不用理会变量范围的规则而在任何地方定义和访问。
  • 常量一旦定义就不能被重新定义或者取消定义。
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting"
?>

<?php 
echo strlen("Hello world!"); //字符串长度

//定义数组
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>
  • 运算符类型;算术、比较、赋值、逻辑、条件运算;
  • 结构类型 if- elseIf- else, switch等等
  • 循环结构:for, while ,do while, foreach

数组:

  • 数字数组 -数组以一个数字作为索引。值在线性中存储和访问。
  • 关联数组 -数组以字符串作为索引。这个数组存储元素值与键值不是一个严格的线性索引顺序。
  • 多维数组 -包含一个或多个数组,数组值可以使用多个索引访问

php可用函数查找

数组排序函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列

PHP 面向对象:

在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象。

对象的三个特征:

  • 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
  • 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
  • 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

面向对象内容:

  • 类 − 定义了一件事物的抽象特点。类的定义包含了数据的形式以及对数据的操作。
  • 对象 − 是类的实例。
  • 成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。
  • 成员函数 − 定义在类的内部,可用于访问对象的数据。
  • 父类 − 一个类被其他类继承,可将该类称为父类,或基类,或超类。
  • 子类 − 一个类继承其他类称为子类,也可称为派生类。
  • 继承 − 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
  • 多态 − 多态性是指相同的函数或方法可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
  • 重载 − 简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
  • 抽象性 − 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
  • 封装 − 封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。
  • 构造函数 − 主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
  • 析构函数 − 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做"清理善后" 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

表单:
PHP 中的 _GET 和_POST 变量用于检索表单中的信息,比如用户输入。

浏览器客户端有两种方法可以将信息发送到 web 服务器。

  • GET 方法
  • POST 方法
    GET方法发送编码用户信息添加到页面请求。页面和编码信息是由?字符分开
http://www.test.com/index.htm?name1=value1&name2=value2

GET 方法仅局限于发送高达 1024 个字符。
如果你有密码或其他敏感信息,从不使用 GET 方法发送到服务器。
不能被用来发送二进制数据,如图像或 word 文档,到服务器。
GET 方法发送的数据可以使用 QUERY_STRING 环境变量访问。
PHP 提供了关联数组$_GET可以访问所有使用 GET 方法的发送信息。

I/O操作:

  • PHP fopen()函数用于打开一个文件。它需要两个参数声明文件名称和操作模式。

这里是用 PHP 读取文件所需的步骤。

打开一个文件使用 fopen() 函数。    
得到文件的长度使用 filesize() 函数。    
读取文件的内容使用 fread() 函数。    
关闭文件和 fclose() 函数。

 <?php
    $filename = "/home/user/guest/tmp.txt";
    $file = fopen( $filename, "r" );
    if( $file == false )
    {
       echo ( "Error in opening file" );
       exit();
    }
    $filesize = filesize( $filename );
    $filetext = fread( $file, $filesize );

    fclose( $file );

    echo ( "File size : $filesize bytes" );
    echo ( "<pre>$filetext</pre>" );
    ?>

php高级技术

正则表达式:http://wiki.jikexueyuan.com/project/php/regular-expression.html

日期和时间:

  • 用 time() 函数得到时间戳
  • 用 getdate()函数来转换时间戳
  • 用 date() 函数把时间戳转化成日期: date(format,timestamp)

GET 方式,传送的信息量有限,而且是以公开的方式在 URL 中传送,GET 方式的可以添加书签,因为 URL 中带有信息,一般从服务器请求信息用 GET,
POST 方式,传送的信息可以很多,不公开,但是不能设书签一般用在触发基于服务器的行为,如提交数据等场景 在表单中,一般使用 POST

AJAX

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

  • AJAX = Asynchronous JavaScript and XML.
  • AJAX 是一种用于创建快速动态网页的技术。
  • AJAX 通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。


    AJAX工作原理

mysql 数据库操作

1.创建数据表:

CREATE TABLE IF NOT EXISTS writers( username varchar(16) NOT null PRIMARY KEY, password char(40) NOT null, fullname text )

CREATE TABLE IF NOT EXISTS stories( id int NOT null PRIMARY KEY AUTO_INCREMENT, writer varchar(16) NOT null, page varchar(16) NOT null, handline text, story_text text, picture text, created int, modified int, published int )

CREATE TABLE IF NOT EXISTS pages( code varchar(16) PRIMARY KEY, description text )

CREATE TABLE IF NOT EXISTS writer_permissions( writer varchar(16) NOT null, page varchar(16) NOT null, PRIMARY KEY (writer, page) )

CREATE TABLE IF NOT EXISTS keywords( story int NOT null, keyword varchar(32) NOT null, weight int NOT null, PRIMARY KEY (story, keyword))

PHP &MYSQL

  • Hardware for the web server
  • An operating system
  • Web server software
  • A database management system
  • A programming or scripting language
  • PHP深入原理
    PHP的设计理念及特点:
  • 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响。当然,随着时代发展,PHP也早已支持多线程模型。
  • 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效,具体会在后面PHP变量中详述。
  • 引擎(Zend)+组件(ext)的模式降低内部耦合。
  • 中间层(sapi)隔绝web server和PHP。
  • 语法简单灵活,没有太多规范。缺点导致风格混杂,但再差的程序员也不会写出太离谱危害全局的程序。

php函数使用
语言特点:

  • 面向对象编程
  • 函数式编程
<?php
$input = array(1, 2, 3, 4, 5, 6);

// Creates a new anonymous function and assigns it to a variable
$filter_even = function($item) {
    return ($item % 2) == 0;
};

// Built-in array_filter accepts both the data and the function
$output = array_filter($input, $filter_even);

// The function doesn't need to be assigned to a variable. This is valid too:
$output = array_filter($input, function($item) {
    return ($item % 2) == 0;
});

print_r($output);
  • 元编程
  • 命名空间:支持同名
  • 标准PHP库

调试

1.在我们出现500错误的php文件前面加上两行代码:

ini_set("display_errors","On");
error_reporting(E_ALL);

这样他就会像IDE工具一样告诉你到底是哪一个文件下的哪一行代码出了问题,导致服务器内部错误,这样我们就能很容易的找出500错误的根本原因呐。

工具使用

Sublime Text3开发PHP技巧

下面是安装的插件:

安装composer

安装composer,不要觉得这个很难安装,so easy,4行代码
1.任意位置都可以,输入下面代码,会下载一个composer-setup.php文件
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
2.运行文件,此刻已经安装好了。会生成一个composer.phar文件,这个就是核心了。
php composer-setup.php
3.删除composer-setup.php文件,这步可以不用操作,强迫症就执行了吧。
php -r "unlink('composer-setup.php');"
4.全局安装,也就是将安装好的composer.phar文件移动到全局环境中。
sudo mv composer.phar /usr/local/bin/composer

开发网站过程步骤:
1.有个整体的网站页面的样子,我们姑且称之为前端开发。
2.前端有了,点击里面的按钮、链接、新增信息、修改信息等等的操作,需要后台编码,姑且称之为后台开发。
3.前端有了,后台有了,数据放哪里啊,因此需要用到数据库了,姑且称之为数据库开发。
4.前面一通完成后,网站可以看了,接下来需要找服务器发布了,姑且称之为网站发布。
5.网站发布了,如果想让别人通过一个域名去访问,因此需要绑定域名了,姑且称之为域名绑定。
6.大功告成,回过头来消化一下吧。姑且称之为回味无穷。

国内cdn:http://www.staticfile.org/

Integer—Used for whole numbers
Float (also called double)—Used for real numbers
String—Used for strings of characters
Boolean—Used for true or false values
Array—Used to store multiple data items (see Chapter 3,“Using Arrays”)
Object—Used for storing instances of classes (see Chapter 6)
//常量定义
define(‘TIREPRICE’, 100);

超级全局定义

$GLOBALS—An array of all global variables (Like the global keyword, this allows
you to access global variables inside a function—for example, as
$GLOBALS[‘myvariable’].)
$_SERVER—An array of server environment variables
$_GET—An array of variables passed to the script via the GET method
$_POST—An array of variables passed to the script via the POST method
$_COOKIE—An array of cookie variables
$_FILES—An array of variables related to file uploads
$_ENV—An array of environment variables
$_REQUEST—An array of all user input including the contents of input including
$_GET, $_POST, and $_COOKIE (but not including $_FILES since PHP 4.3.0)
$_SESSION—An array of session variables

打开文件:fopen("文件名", "r");
代码复用&组件化:

Using require() and include()

ob_start 与 ob_end_flush()

php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数。

ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。

ob_end_flush - 结束(发送)输出缓冲区的内容,关闭输出缓冲区。

http://wiki.jikexueyuan.com/project/php-developer-prepares/

  • Shell
    echo, printf, test(写shell脚本判断条件 -n -z 傻傻分不清楚的时候就靠 ta 了), sleep, sh, set
  • 用户环境
    clear, env, export, history, passwd, su, sudo, exit, who
  • 包管理
    yum, rpm or apt-get, dpkg
  • 文件系统
    pwd, cd, cp, ls, mkdir, mv, rm, ln
    file, du, df, mount, touch, cat
    chmod, chown, chgrp, chksum
  • 查找
    find, grep, whatis, whereis
  • 文本处理
    awk, sed, cut, diff, sort, uniq, wc, xargs
    head, tail(tail -f), less
  • 进程相关
    at, cron, crontab, kill, killall, pgrep, ps, time, nohup, screen(远程会话管理), supervisord(进程守护神)
  • 网络
    dig, host, ifconfig, netstat, nslookup, ping, route, traceroute, iptables, wget, curl
  • 压缩
    tar, gzip, unzip
  • 远程
    ssh, scp, sftp, rsync(文件同步)
  • 系统状况
    uname, free, df, du, top, htop(比 top 好用多了), iftop, iotop, iostat, isof

鸟叔的Linux私房菜

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,022评论 6 528
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,760评论 3 412
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,687评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,318评论 1 307
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,112评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,645评论 1 320
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,724评论 3 435
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,885评论 0 285
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,387评论 1 330
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,368评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,506评论 1 365
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,063评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,759评论 3 343
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,150评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,414评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,080评论 3 386
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,494评论 2 370

推荐阅读更多精彩内容

  • 参考资料:PHP5 权威编程 变量 定义:$变量名 = 值; 例如:$demo = 1; 变量的基...
    _1633_阅读 1,685评论 1 4
  • Welcome 目前网络上充斥着大量的陈旧信息,让PHP新手误入歧途,传播着错误的实践和糟糕的代码,这必须得到纠正...
    layjoy阅读 21,696评论 7 118
  • 秋日天苍凉,一行雁南飞。 莫问流离人,归期未有期。
    天下第一LIU阅读 246评论 0 0
  • #清凉法语# 别人毁谤你 别人毁谤你,说明你比他优秀。别人利用你,说明你有价值。别人嫉妒你,说明你走在他前面。别人...
    xcy无名阅读 289评论 0 1
  • 刚接触媛媛提出需要培养逆向学习思维会觉得比较抽象,仔细听来,结合自身工作倒也具象。一般正向学习思维是从条件推解至结...
    林初夏阅读 255评论 0 0