1、用’$'声明变量
2、用echo输出
2、声明数组可以
$array=['a','b','c']或者$array=array('a','b','c')
输出之前可格式化标签 echo '<pre>'
输出print_r($array);
输出var_dump($array) //可输出类型
3、声明对象可以
$object= new stuClass() new一个对象
$object->name = '王二小';
$object->course = 'php';
$object->grade = '80';
输出print_r($object);
输出var_dump($object) //可输出类型,编号,属性
4、标量输出echo,print或var_dump()可查看类型和值
$name = 'peter'
echo $name //peter
print $name //peter
var_dump($name) //string(5)'peter' var_dump可输出类型和值和字符
5、标量类型(一个变量名放一个值)、复合类型(一个变量名放多个值)
6、资源类型
$file = fopen('demo1.php','r') or die('打开失败') //打开demo1.php文件,‘r’表示只读
echo fread($file,filesize('demo1.php')); //filesize计算当前文件有多大
fclose($file); //关闭资源文件
7、字符串和变量一起输出写法
$name = 'peter';
echo '名字为:'.$name
8、变量类型查询,类型强制转换
$price=186.79;
echo gettype($price); //double 查询类型
echo (int)$price; //186 强制转换,并不改变原类型
echo intval($price); //186 常用,强大可转换二进制 强制转换,并不改变原类型 类似floatval(),strval() 临时当做浮点,字符串用
settype($price,'integer') //永久转型为integer
echo is_int($price)?'Integer':'Double'; //Integer 判断是否转换为整型
9、is_null,empty,isset区别
$val1;//未赋值
$val2=null;
$val3='php';
unset($val3); //销毁$val3
@var_dump(is_null($val1)?true:false);//输出的都为true 判断是否为空 @屏蔽警告
$srt1='';
$str2='0';
$str3=0;
$str4=null;
$str5=false;
var_dump(empty($str1)?true:false);//true 五种情况全为true 判断是否为空
$domain='www.php.cn';
$name=null;
$job;
var_dump(isset($domain)?true:false);//true 其他两个为false isset()变量已存在,并且它的值不为null,返回true,否则为false,isset()是null的取反操作
10、变量运算
(1)、算数运算:返回数值型(integer/float)
(2)、逻辑运算:返回布尔型(true/false)
(3)、字符运算:返回字符串型(string)
var_dump(5+10) //int(15) var_dump(5+'1a')返回6 var_dump(5+'a1')返回5
var_dump(3.14*5*5) //float(78.5)
var_dump(100>90) //bool(true)
var_dump(100>90 && 30>=50) //bool(false)
var_dump(100>90 && 30>=50) //bool(true)
$siteName='php中文网';
$course='php编程技术'
echo '欢迎来到'.$siteName.'学习'.$course; //欢迎来到php中文网学习php编程技术
11、变量作用域
(1)、全局:函数之外创建,仅在当前脚本除函数之外的地方使用
(2)、局部:函数内部创建,仅能在函数中使用,外部不可访问
(3)、静态:函数内部创建,仅在函数中使用,函数执行完成它的值不会丢失
全局、局部:
$siteName='PHP中文网'; //全局变量
//全局变量自动成为全局变量数组中的一个键值对,键与变量对应
$GLOBALS['siteName']='PHP中文网'
function hello(){
//第一种方法
global $siteName; //全局变量引入到函数
$userName='Peter Zhu';
return '欢迎来到'.$siteName.',我是'.$userName;
//第二种方法
$userName='Peter Zhu';
return '欢迎来到'.$GLOBALS[siteName].',我是'.$userName;
}
echo hello() //输出函数
静态:
function myStatic(){
static $num = 1; //只执行一次
return '第'.$num.'次输出'.$num++;
}
echo myStatic(); //第一次执行完成后$num值变2
echo myStatic(); //第二次执行完成后$num值变3
echo myStatic(); //第三次执行完成后$num值变4
超全局变量:$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_REQUEST
(1)、属预定义变量,全部是数组,拿来就用,不需要声明;
(2)、跨作用域,在全局和局部(函数内部)都可以直接使用
(3)、跨作用域不是跨脚本,所谓超全局,包括全局,都是指在当前脚本文件中
echo '我的姓名是:'.$_GET['name']; //name是超全局,可自己定义,我的姓名是xxx
function sayName(){
return '我的姓名是:'.$_GET['name'];
}
echo sayName();
12、常量的声明,赋值与输出
define('SITE_NAME','Peter Zhu的博客'); //函数define创建
const COUNTRY='中国'; //关键字const创建
echo SITE_NAME,COUNTRY //关键字echo访问 输出Peter Zhu的博客中国
echo constant('SITE_NAME');
echo constant('COUNTRY'); //函数constant访问
print_r(get_defined_constants()); //获取系统全部常量,含自定义
echo defined('SITE_NAME')?'已定义':'未定义'; //已定义 检测常量是否已声明
13、数组的创建,访问与更新
$city = ['合肥','上海','杭州','南京']; //索引数组
$user = ['id'=>10,'name'=>'Peter','course'=>'php','grade'=>99]; //关联数组
print_r($user); //输出整体
echo $user['name']; //查看单个元素 Peter
$user['name']='朱老师';
echo $user['name']; //朱老师
unset($city); //销毁数组
array_splice($city,1,1); //删除$city数组中的第二个元素,第一个1是索引起始位置,第二个1是删除数量
14、常用数组函数(一)
$books=['name'=>'PHP经典实例','price'=>59,'author'=>'Peter Zhu'];
echo in_array(59,$books)?'存在':'不存在'; //存在 判断数组中是否存在59这个值
echo array_key_exists('name',$books)?'存在':'不存在'; //存在,判断某个键名是否存在在键值对中
echo array_push($books,500,800); //尾部添加两个元素,添加的元素是索引元素
$books['publish']='机械工业出版社; //通过直接追加方式在尾部添加关联元素
echo array_pop($books); //出栈,返回最后进栈元素,注意只有值没有键名
echo array_unshift($books,500,800); //头部添加两个元素,添加的元素是索引元素
echo array_shift($books); //从头部将第一个元素弹出
排序:
$arr=[90,35,120,9,45,30,22,9];
sort($arr);//索引重排,升序排列,成功true,失败false,只针对索引数组
rsort($arr);//索引重排,倒序排列,成功true,失败false,只针对索引数组
asort($books);//按键值排序,保持键值关系
ksort($books);//按键名排序,保持键值关系
15、常用数租函数(二)
分割:
$arr = [3,5,10,4,'a'=>'中国','php',39,'mysql','java',true,[100,200,300]];
print_r(array_chunk($arr,3,true)); //数组分割三个为一组,true表示索引,键名不变
合并:
$arr1=['name'=>'peter','course'=>'php','grade'=>'80'];
$arr2=['name'=>'朱老师','sex'=>'男','salary'=>'5000','job'=>'lecturer'];
$arr1=array_merge($arr1,$arr2); //合并后更新第一个数组
print_r($arr1);//['name'=>'朱老师','course'=>'php','grade'=>'80','sex'=>'男','salary'=>'5000','job'=>'lecturer'];
数组循行
echo key($arr2).'=>'.current($arr2); //name=>朱老师 手工逐条遍历数组$arr2
next($arr2);//数组指针下移一位
echo key($arr2).'=>'.current($arr2); //sex=>男
end($arr2);//数组指针下移到尾部,指向最后一个元素
echo key($arr2).'=>'.current($arr2); //job=>lecturer
prev($arr2);//数组指针向前移一位
echo key($arr2).'=>'.current($arr2); //salary=>5000
reset($arr2);//数组指针下移到头部,指向第一个元素
echo key($arr2).'=>'.current($arr2); //name=>朱老师
print_r(each($arr2));//输出第一个元素的索引与关联部分 ['1'=>'朱老师','value'=>'朱老师','0'=>name,'key'=>name];
print_r(each($arr2));//指针自动下移到第一个元素 ['1'=>'男','value'=>'男','0'=>sex,'key'=>sex];
list()可以将索引数组转为变量,变量名由list的参数决定,变量值就是索引数组元素的值,注意顺序是一一对应的
list($a,$b)=[100,200];
$a=100;$b=200;
list($key,$value)=each($arr2);
echo $key.'=>'.$value'//name=>张老师
list($key,$value)=each($arr2);
echo $key.'=>'.$value'//sex=>男
循环:
while(list($key,$value)=each($arr2)){
echo $key.'=>'.$value
}
16、条件判断与多分支
if(){
}elseif(){
}
$program='mysql';
switch(strtilower($program)){ //strtilower要标量
case 'php':
echo 'php是全世界最好的编程语言';
break;
case 'mysql':
echo 'mysql是全球最流行的免费的关系型数据库管理系统';
break;
case 'html':
echo 'html是全世界最好的编程语言';
break;
case 'css':
echo 'css是全世界最好的编程语言';
break;
default:
echo 'xxxxxxx';
break;
}
17、mysql数据库操作入门,mysqli面向过程
配置参数:
$host = 'localhost'; //主机名称
$dbName='demo'; //数据库名称
$userName='root'; //用户名
$password='root'; //密码
连接到数据库:
$conn=mysqli_connect($host,$userName,$password,$dbName);
测试是否连接成功:
if(mysqli_connect_errno()){
die('连接失败');
}else{
echo '<h3>连接成功</h3>';
}
18、引用PHP页面可以使用
<?php include 'xxx.php'; ?> 或者 @include('xxx.php')
19、创建代码快捷方式
ul>li*10>a{公司最新新闻$$}
输出
<ul>
<li><a href=''>公司最新新闻01</a></li>
<li><a href=''>公司最新新闻02</a></li>
<li><a href=''>公司最新新闻03</a></li>
...
</ul>
20、php导航栏跳转
<html>
...
<body>
<?php
$id = isset($_GET['id'])?$_GET['id']:''; //解析url
switch($id){
case 1:
include 'nav.php'; //导航栏页面
include 'news.php'; //新闻页面
break;
case 2:
include 'nav.php'; //导航栏页面
include 'about.php'; //关于我们页面
break;
default:
include 'nav.php'; //导航栏页面
break;
}
?>
</body>
</html>
21、
$getNo=isset($_GET)?count($_GET):0; //count计算返回参数的数量
22、
$get=array_keys($_GET); //$get=['键名1','键名2'] array_keys()返回数组键名组成数组
23、php路由
$getNo=isset($_GET)?count($_GET):0; //先获取路径里面的参数,数量
switch($getNo){
case 0:
include 'select_index.php';
break; //没有参数的时候跳转到首页
case 1:
case 2:
case 3:
$get=array_keys($_GET); //获取路径后面参数的键值对组成数组
switch($get[0]){
case 'page':
include 'select_index.php';
break 2; //2:跳到最外层返回
case 'cat':
if(in_array('id',$get)){ //判断get数组中是否有id这个参数
include 'select_countent.php';
break 2;
}
include 'select_cat.php';
break 2;
case 'act':
include 'select_act.php';
break 2;
}
break;
default:
echo '<script>alert(\'参数错误\');location.href=\'/index.php\';</script>';
break;
}
24、函数
函数种类:自定义的函数,系统函数,匿名函数
函数的参数:自定义参数,默认参数,引用参数,回调参数
(1)自定义参数:
function hello($course='php'){
return '欢迎学习'.$course.'课程';
}
echo hello(); //调用,没给参数时调用默认参数
echo call_user_func('hello','参数');//用系统函数调用函数
echo call_user_func_array('hello',['参数1']); //用系统函数调用参数,可以数组调用多个参数
(2)、系统函数
function var_dump($num){
return $num;
}
echo var_dump(10); //报错,不能自定义系统函数
(3)、匿名函数:不是没有名字,他的名称可以任意,也叫闭包函数
①匿名函数当做变量值来使用
$result = function ($n,$m,$opt){
switch($opt){
case '+':
$temp = $n+$m;
break;
case '-':
$temp = $n-$m;
break;
case '*':
$temp = $n*$m;
break;
case '/':
$temp = round($n/$m,2) //保留两位小数
break;
case '%':
$temp = $n%$m
break;
default:
$temp='操作符错误'
break;
}
return $n.$opt.$m.'='.$temp;
};
echo $result(3,4,+); //3+4=7
②但匿名函数出现在函数参数的位置,这是他就是一个回调函数,把函数当作另一个函数的参数,这个函数就是回调参数
$arr=[2,3,'',9,'',30,'',9];
array_filter($arr); //array_filter()去掉数组里面的空字符
$temp=array_filter($arr,function($val){
return $val%2; //返回数组中的奇数
return !($val%2); //返回数组中的偶数
})
print_r($temp)
③默认参数
第一要用放到后面,放在没有参数值的后面
第二他的值不能是表达式必须是常量,直接量,标量
25、mb_substr($art[‘title’],0,20,‘utf-8’); //截取字符串长度为20
26、ceil(5/2); //3 结果向下取整
PHP laravel框架
1、composer软件安装laravel
2、laravel目录
app 应用核心代码
bootstrap 框架的自动加载文件
config 配置文件
database 数据库迁移
public 网站的主入口和前端资源
resources 页面文件
routes 路由目录
storage 临时文件
tests 自动化测试目录
vendor composer依赖包
3、.env 数据库相关配置 配置连接数据库
4、…/routes/web.php 设置路由 Route::get(’/user’,‘IndexController@index’); //user是resources/views下面的user.blade.php页面,IndexController@index是IndexController控制器下面的index方法
5、cmd里面写命令行 项目路径—>php artisan make:controller IndexController //创建IndexController控制器
6、在控制器里面写方法输出页面
public function index(){
return view('user'); //user是resources/views下面的user.blade.php页面
}
7、html里写for循环
@foreach($data as $value) //$data后台返回的数据,$value自己定义一个参数
<div>{{$value->id}}</div> 或者 <div>{{$value['id']}}</div>
<div>{{$value->name}}</div> 同上
<div>{{$value->time}}</div> 同上
@endforeach
8、 model 数据模型 app/User.php 自定义数据模型
view 视图 resources/views
controller 控制器 app/Http/Controllers
9、配置文件
(1)、环境配置(/.env)
1.1 环境配置解析 APP_KEY 网站的密匙
php artisan key:generate 生成密钥
1.2 APP_DEBUG 默认(true)
网站开发时候开启(true) 如果网站上线 必须吧开发模式关闭(false)
1.3 获取环境配置信息
env('APP_DEBUG');
env('APP_DEBUG',false); //如果环境配置中未设置APP_DEBUG 采用默认值false
1.4 设置自定义环境变量
1)(/.env)
DB_PREDIX=blog_
2)使用
env('DB_PREDIX')
(2)、系统配置(/config)
1.1 读取配置
//读取时区
dd(Config('app.timezone'))
1.2 修改配置
Config(['app.title'=>'xxxxx'])
10、php artisan(php 工具匠)
(1)、简介
php artisan(php 工具匠),其实本身就是一些PHP文件,可以在命令行下可以执行这些PHP文件
可以王城创建控制器、创建中间件、生成密匙等
(2)、网站下线
php artisan down
(3)、网站下线默认展示页面
/resources/views/errors/503.blade.php
(4)、网站上线
php artisan up
(5)、查看路由列表
php artisan route:list
11、路由
(1)、基本路由
1)直接输出内容
Route::get('jiben',function(){
echo '我是基本路由';
})
2)加载页面
Route::get('jiben1',function(){
return view('home');
})
需要手动创建../resources/views/home.blade.php
3)加载控制器
Route::get('jiben2','JibenController@index');
4)创建控制器
1、手动创建
需要将已有控制器复制一份,进行重命名,一定要注意文件名必须和类名相同
2、atrisan 创建
php artisan make:controller IndexController;
12、路由类型
(1)、类型
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
(2)、get
//登录页面
Route::get('login','LoginController@index');
(3)、post
//处理登录操作
Route::post('check','LoginController@check');
dd($_POST) //可以打印出前端传过来的数据
(4)、put
路由中书写
//put请求
Route::get('putWeb','LoginController@putWeb');
//put的处理页面
Route::put('put','LoginController@put');
控制器书写
//put请求页面
public function putWeb(){
return view('putWeb');
}
//put请求处理页面
public function put(Request $request){
dd($request->input());
}
请求页面书写
<form action='put' method='post'>
<p>
{{csrf_field()}}
<input type='hidden' name='_method' value='put' />
<input type='reset' value='重置' />
.....
(5)、CSRF 保护 保护表单安全
Laravel 可以轻松使地保护你的应用程序免受 cross-site request forgery (CSRF) 攻击,跨站点请求伪造是一种恶意攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令
{{csrf_field()}} //在页面的form里面写
13、一个路由实现多种请求
(1)、match
Route::match(['get','post'],'/','IndexController@index');
(2)、any
Route::any('/','IndexController@index');
14、资源路由
(1)、实例
后台拥有很多模块,用户模块,管理模块等(增,删,改,查)
(2)、资源路由
Route::resource('Admin','IndexController');
15、参数路由
(1)、带参数路由
Route::get('user/del/{id}',function($id){
echo $id;
})
(2)、带多个参数的路由
Route::get('user/{name}/{sex}',function($name,$sex){
echo $name;
echo $sex;
})
(3)、设置路由的默认值
Route::get('user/edit/{id?}',function($id='默认值'){
echo $id;
})
(4)、带参数访问到控制器
//新建UserInfo
public function UserInfo($a,$sex){
var_dump($a);
var_dump($sex);
}
16、命名路由
Route::get('abc','IndexController@abc')->name('one');
#获取别名的url地址
route('one');
#通过命名路由实现重定向
return redirect()->route('one');
17、路由组
(1)、中间件
1)路由如何书写
//通过路由组 提取公共命名空间 公共的前缀 中间件 'namespace'控制器前缀 'prefix'页面前缀 'middleware'中间件
Route::group(['namespace'=>'Admin','prefix'=>'admin','middleware'=>'adminLogin'],function(){
Route::get('/','IndexController@index');
});
2)如何新建中间件
php artisan make:middleware adminLogin
3)注册中间件(../app/http/kernel.php)
protected $routeMiddleware = [
'adminLogin' => \Illuminate\Auth\Middleware\AdminLogin::class,
];
4)打开中间件(../app/http/middleware/adminLogin.php)
public function handle($request, Closure $next){
//判断后台是否登录
if(session('lenovoAdminUserInfo')){ //lenovoAdminUserInfo一般在登录页定义Session["lenovoAdminUserInfo"]="123";
return $next($request)
}else{
return redirect('admin/Login')
}
}
(2)、命名空间
Route::group(['namespace'=>'Admin','prefix'=>'admin'],function(){
Route::get('/','IndexController@index');
Route::get('user','IndexController@index');
Route::get('goods','IndexController@index');
});
Route::group(['namespace'=>'Home'],function(){
Route::get('/','IndexController@index');
});
#需要在控制器目录下新建Admin目录和Home目录 在目录中新建控制器
#注意需要修改命名空间
18、使用laravel搭建网站的前后台
(1)、路由规则(../routes/web.php)
//前台路由
Route::group(['namespace'=>'Home'],function(){
Route::get('/','IndexController@index');
});
//后台路由
Route::group(['namespace'=>'Admin','prefix'=>'admin'],function(){
Route::get('/','IndexController@index');
Route::get('user','IndexController@index');
Route::get('goods','IndexController@index');
});
(2)、搭建控制器(../app/http/controllers)
1)新建Admin目录,存放后台控制器
2)新建Home目录,存放前台控制器
3)在前后台目录,根据路由的需要创建控制器(以后台为例,修改命名空间)
IndexController.php
namespace App\Http\Controllers\Admin;
namespace App\Http\Controllers\Controller;
(3)、搭建页面(../resource/views)
以后台首页为例
1)后台首页控制器
public function index(){
//引入页面
return view('admin.index')
}
2)在视图目录下新建admin目录,用于存放所有的后台页面
3)在admin目录下新建后台首页文件 index.blade.php
4)需要修改css样式和js引入目录
一般建议大家吧样式文件夹放到../public下
(4)、完成用户模块
1)控制器如何书写
2)页面如何书写
19、模板布局
(1)、主要解决网站后台公共部分修改
(2)、需要在视图目录下新建muban模板
(3)、新建一个模板文件admin.blade.php
<html>
<head>
</head>
<body>
#不一样的地方需要使用
@yield('main')
.....
(4)、 普通页面如何书写
#继承模板
@extends('muban.admin')
#替换占位的内容
@section('main')
<div>xxxxxxx</div>
@endsection
20、请求
(1)、获取地址
//输出当前URL地址
echo $request->fullUrl();
http://www.xxx.com/xxx?name=xxx
//获取URL的路由
echo $request->path();
request
//获取URL地址除参数
echo $request->url();
http://www.xxx.com/request
//判断路由是否是request 返回值 true|false
var_dump($request->is('request'))
(2)、获取请求类型
//获取请求方式
echo $request->method();
//判断当前请求是不是get请求
var_dump($request->isMethod('GET'));
(3)、请求数据
//获取所有的请求数据
$data=$request->all();
//获取特定字段
echo $request->input('name');
//设置默认值
echo $request->input('name','强哥');
//判断是否存在
var_dump($request->has('name'))
//获取部分数据
$data1=$request->only('name','pass');
$data1=$request->only(['name','pass']);
var_dump($data1)
//除了一些数据以外
$data1=$request->except('name','pass');
$data1=$request->except(['name','pass']);
(4)、闪存
//把表单提交所有数据写入闪存
$request->flash();
//使用闪存
{{old('name')}}
//把谁写入闪存
$request->flushOnly();
//除了谁写入闪存
$request->flushExcept();
//把当前所有的数据都写入闪存
return back()->with('errors','xxxxxx')->withInput();
(5)、图片上传
如何实现文件上传
1.1判断是否上传文件
1.2把文件移动到指定目录
//获取上传文件
$img=$request->file('img');
$img2=$request->img;
//判断文件是否上传
var_dump($request->hasFile('img'))
//实例
if($request->hasFile('img')){
//获取后缀名
$ext = $request->file('img')->getClientOriginalExtension();
//新的文件名
$newFile=time().rand().'.'.$text;
//上传文件操作
$request->file('img')->move('./Uploads',$newFile)
}else{
//回到上一个页面
return back();
}
(6)、COOKIE
1、COOKIE的使用场景
登录
[如果未勾选自动登录 默认采用session]
[如果勾选自动登录 默认采用cookie]
浏览记录
2、注意:
laravel 框架吧所有的COOKIE进行加密
$_COOKIE['name']=/=$request->cookie('name');
3、查看cookie
//查看所有cookie
//dd($request->cookie());
//查看cookie
echo \Cookie::get('laravel_session');
echo $request->cookie('laravel_session')
//设置COOKIE
\Cookie::queue('shuaige','xxx',10);
$cookie=cookie('name','value',10);
return response('Hello World')->cookie($cookie);
21、响应
(1)、所有的路由及控制器必须返回某个类型的响应,并发送给用户的浏览器
(2)、响应字符串
return '123';
(3)、响应数组形式
如果响应数组的话,直接会转换成json
$arr = array('name'=>'小镊子','love'=>'小猫咪');
return $arr;
(4)、响应页面
return view('xiang');
$arr = array('name'=>'小镊子','love'=>'小猫咪');
$arr1 = array('name'=>'小镊子1','love'=>'小猫咪1');
$arr2 = array('name'=>'小镊子2','love'=>'小猫咪2');
$arr3 = array('name'=>'小镊子3','love'=>'小猫咪3');
$data=array(
'brr'=>$arr,
'brr1'=>$arr1,
'brr2'=>$arr2,
'brr3'=>$arr3,
)
return view('xiang')->with($data);
(5)、响应json
return response()->json(['name'=>'小镊子','love'=>'小猫咪'])
(6)、文件下载
return response()->download('./Uploads/q.png')
#会报错 需要打开php.ini 开启扩展 extension=php_fileinfo.all 重启服务
(7)、文件查看
return response()->file('./Uploads/q.png');
22、视图
(1)、其实就是HTML页面,把控制器中的数据进行处理和展示
(2)、使用
控制器
public function index(){
$name='云之梦,只为有梦想的人';
return view('shitu')->with('meinv',$name);
}
页面中
#可以直接使用PHP代码,但是不建议大家使用
<?php
echo $meinv
?>
{{$meinv}}
(3)、{{}}是定界符
模板解析的原理
{{$meinv}} 通过一些替换技术(正则匹配) 最终替换成<?php echo e($meinv) ?>
(4)、分配多个数据
return view('shitu')->with('name',$name)->with('qiangge',$qiangge);
return view('shitu')->with(['name'=>$name,'shuaige'=>$qiangge]);
$data=array(
'name'=>$name,
'shuaige'=>$qiangge
);
return view('shitu',$data);
return view('shitu')->with($data);
(5)、模板中使用函数 md5()解密
{{date('Y-m-d H:i:s')}}
{{substr(strtoUpper(md5($pass)),10,2)}}
(6)、判断值存在输出 不存在默认值
{{$pass or '数据不存在'}}
(7)、输出html代码
#默认控制器中分配的HTML代码 会直接转换成实体
{!!$html!!}
(8)、不解析{{}}
@{{$pass}}
(9)、逻辑控制
1)if
@if($qiangge>100)
<h1>胖</h1>
@elseif($qiangge>80)
<h1>中</h1>
@else
<h1>瘦</h1>
@endif
2)for
@for($i=0;$i<=10;$i++)
<h1>{{$i}}</h1>
@endfor
3)while
{{$y=0}}
@while($y<5)
{{$y++}}
<h1>{{$y}}</h1>
@endwhile
4)嵌套
@for($i=0;$i<=10;$i++)
@if($1%2)
<h1 style='color:red'>{{$i}}</h1>
@else
<h1 style='color:blue'>{{$i}}</h1>
@endif
@endfor
5)foreach
@foreach($data ad $key=>$value)
<h1>
<span>{{$value->id}}</span>
<span>{{$value->name}}</span>
<span>{{date('Y-m-d H:i:s',$value->time)}}</span>
@if($value->statu)
<span>正常</span>
@else
<span>禁用</span>
@endid
</h1>
@endforeach
23、模板布局
#把页面的公共部分进行提取
(1)、新建公共目录(../resources/views)
新建layout目录
(2)、新建后台公共文件
admin.blade.php
(3)、打开后台公共页面
#将每一个页面不一样的部分用@yield('main')占位,一个页面可以有多个占位 用名字区分
(4)、普通页面中该如何书写
#继承公共的模板页面
@extends('layout.admin') //引入公共页面
#修改内容区域
@section('title','云之梦后台管理系统')
@section('main')
<div>内容部分</div>
@endsection
24、文件包含
@include(‘public.footer’)
25、引入外部验证码
1、把验证码文件夹拷贝到指定目录(../resources)
2、书写路由
Route::get('admin/yzm','Admin/LoginController@yzm');
3、控制器中生成二维码
//引入验证码类
include '../resources/code/Code.class.php'; //或者require_once('../xxxxx')
//实例化验证码类
$code=new \Code();
//生成验证码
$code->make();
//获取验证码
$code->get();
26、登录和退出系统
1、使用了中间件
2、登录
session(['key'=>'value']);
3、退出
session()->flash();
27、调试工具
1、使用调试工具
在 ../config/app.php 添加一句话182行
Barryvdh/Debugbar/ServiceProvider::class;
2、安装调试助手
composer require barryvdh/laravel-debugbar
28、自定义函数
1、新建了函数的公共目录,创建php文件
../app/Common/function.php
2、修改composer.json
'files':[
'app/Common/function.php'
]
3、重新加载配置文件
composer dump-auto
29、分页效果
1、控制器
$data=\DB::table('user')->orderBy('id','desc')->paginate(10);
//simplePaginate 简化的分页效果
//paginate 正常分页效果
//加载用户管理页面
return view('admin.user.index')->with('data',$data);
2、页面中
{{$data->links()}}
30、密码加密解密
加密:\Crypt::encrypt($data->pass)
解密:\Crypt::decrypt($data->pass)
31、页面传参的几种方式
return view('articles.lists')->with('title',$title);
return view('articles.lists',['title'=>$title]);
return view('articles.lists',['title'=>$title,'introduction'=>$intro]);
return view('articles.lists',compact('title','intro'));
$head = [
'title' => " 一个站在web前端设计之路的技术员个人博客网站",
'keywords' =>"个人博客",
'description' => "提供个人博客模板免费资源下载的个人原创网站。",
];
$assign = [
'head' => $head,
];
return view('home.index.time',$assign);
32、获取路径后面的参数
$path=$_SERVER['REDIRECT_URL'];
//分割字符串
$arr=explode('/',$path);
//获取名
$name=isset($arr[2])?$arr[2]:'';
33、把字符串数组化
parse_str($_POST['str'],$arr)
//移除repass
unset($arr['repass'])
34、把字符串重复五次
{{str_repeat('☆',$value->start)}}
35、缓存
//写入缓存
\Cache::put('data',$data,1);
//读取缓存
$data=\Cache::get('data');
//删除缓存
\Cache::forget('data');
//删除所有缓存
\Cache::flush();
36、清除文件缓存
$path='../storage/framework/views';
$arr=scandir($path); //读取文件路径
foreach($arr as $key=>$value){
if($value != '.' && $value!='..'){
unlink($path.'/'.$value); //删除缓存文件
}
}