目录
服务器入门和安装
服务器入门
软件构架
C/S:客户端 -> 服务端
B/S:浏览器 -> 服务端
哪些技术可以开发网站?
php、jsp、asp、ruby、python、nodejs、c/c++等
服务器:apache这个软件运行在你的电脑上,那么你电脑上某一个磁盘就对外可见,别人可以通过IP或者域名访问到这个位置
服务端 资源提供方
客户端 资源受益方
服务器安装
(集成开发环境)
WAMP架构解读:
windows + apache + mysql + php
LAMP/LNMP构架解读:
Linux + apache + mysql + php
Linux + nginx + mysql + php
PHPnow:(前后端交互)
apache + mysql + php
PHPnow/htdocs:服务器根目录(放在此目录下)
localhost:直接访问本地电脑服务器
127.0.0.1
IP:访问当前电脑的服务器
不写文件路径的话,默认访问到的是 index开头的文件
index.php
index.html
index.jsp
PHP语法
PHP简介
遇到php工程师,不要争辩,因为他会说:PHP是世界上最好的开发语言!
PHP语言的特点:
- PHP是一种通用的开源脚本语言
- PHP脚本在服务器上运行
- PHP可在不同的平台上运行(windows、linux、unix、Mac、OSX等)
- PHP与目前几乎所有的正在被使用的服务器兼容(Apache、IIS等),全球95%以上的网站都是由PHP开发的
- PHP提供了广泛的数据库支持
- PHP是免费的,可以在官网下载它:www.php.net
- PHP易于学习,并可高效的运行在服务器端
首先,作为一个后台语言,标准的变量、数据类型、运算、选择结构、循环结构、函数、数组;跟大多数的编程语言是一样的。唯一的差别基本都在一些语法上。
以实用为目的,我们快速介绍一下PHP的用法。
PHP作为一个动态网页编程语言,它不仅能编写后台程序,同时也具备编写动态网页的能力,跟JSP一样。
PHP的输出函数
如果语句中含有标签会自动解析
【注】PHP代码兼容html和css的所有代码
<?php
header('content-type:text/html;charset="utf-8"');
/*
php输出函数
php => 数据库
php => 编写html代码
*/
echo "<h1>hello world</h1>";
echo("<h1>hello world</h1>");
print_r("<h1>hello world</h1>");
/* 类似于js总的console.log();用于测试程序 */
var_dump(100); //int(100)
var_dump("hello"); //string(5) "hello"
?>
RIA
PIA:丰富的互联网应用程序
前后端分离进行开发
后台开发工程师:php + mysql
前端开发工程师:html + css + JavaScript 网站,我们能看到的部分
全栈开发工程师:前后端技术都会,移动端开发
变量和数据类型
【注】php的语法是非常严格,每一条语句后面都必须加分号
- 变量以$符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A - z、0 - 9 和 _)
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
php是弱引用语言:给变量赋值什么数据,就是什么数据类型。
php字符串拼接的时候,用的不是加号,而是 .
php在进行字符串拼接的时候:占位符的方式进行拼接 {变量/表达式}
<?php
header('content-type:text/html;charset="utf-8"');
/*
php声明变量通过$符号进行声明
*/
$username = "钢铁侠";
$age = 18;
/*
php字符串拼接的时候,用的不是加号,而是 .
php在进行字符串拼接的时候:占位符的方式进行拼接 {变量/表达式}
*/
echo "我是".$username.",今年".$age."岁</br>";
echo "我是{$username},今年{$age}岁</br>";
?>
数据类型
String(字符串)、Integer(整型)、Float(浮点型)、Boolean(布尔型)、Array(数组)、Object(对象)、NULL(空值)
条件语句
<?php
header('content-type:text/html;charset="utf-8"');
/* 分支语句 */
$isYes = true;
if($isYes){
echo "是";
}else{
echo "否";
}
/* switch语句 */
$num = 2;
switch($num){
case 1:
echo "数字1";
break;
case 2:
echo "数字2";
break;
default:
echo "输入错误";
break;
}
echo "</br>";
/* 循环 */
for($i = 0; $i < 5; $i++){
echo "下标$i </br>";
}
?>
函数
<?php
header('content-type:text/html;charset="utf-8"');
/* 函数 */
function printHello(){
print "hello world</br>";
}
printHello();
printHello();
?>
PHP的数组
- 索引数组 下标是数组的叫做索引数组
- 关联数组 下标是字符串的叫做关联数组 (类似于ECMA6的map类型)
- 全局数组(天生存在) $_GET(接收通过get提交过来的所有的数据) $_POST(接收通过post提交过来的所有的数据)
- 数组中的索引数组和关联数组可以相互结合,结合成多维数组
索引数组
<?php
header('content-type:text/html;charset="utf-8"');
$cars = array("大众", "别克", "现代");
var_dump($cars); //array(3) { [0]=> string(6) "大众" [1]=> string(6) "别克" [2]=> string(6) "现代" }; 一个汉字当作三个字符处理
echo $cars[1]; //别克
/*
数组的长度 count($cars) 返回数组的长度
*/
for($i = 0; $i < count($cars); $i++){
echo "下标:{$i},数据:{$cars[$i]}<br/>";
}
?>
关联数组/键值数组
<?php
header('content-type:text/html;charset="utf-8"');
$arr = array("王五" => "打渔的", "李四" => "种地的","张三" => "打猎的");
var_dump($arr); //array(3) { ["王五"]=> string(9) "打渔的" ["李四"]=> string(9) "种地的" ["张三"]=> string(9) "打猎的" }
/* 数组遍历 */
foreach($arr as $key => $value){
echo "下标:{$key},数据:{$value}<br/>";
}
// 二维
$arr = array(
array("name" => "小白", "english" => 100, "math" => 50),
array("name" => "小花", "english" => 60, "math" => 80),
array("name" => "小红", "english" => 100, "math" => 50)
);
for($i = 0; $i < count($arr); $i++){
var_dump($arr[$i]."<br/>"); //string(10) "Array " string(10) "Array " string(10) "Array "
}
echo $arr[2]["math"]; //50
?>
数组函数
- array_keys() //返回数组中所有的键名
- array_pop() //删除数组中的最后一个元素(出栈)
- array_push() //将一个或多个元素插入数组的末尾(入栈)
- array_rand() //从数组中随机选出一个或多个元素,返回键名
- array_shift() //删除数组中的第一个元素,并返回被删除元素的值
- count() //返回数组中元素的数目
- in_array //检查数组中是否存在指定的值