PHP初学笔记

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 1case 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)、逻辑控制
		1if
			@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
		3while
			{{$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);  //删除缓存文件
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值