梳理19年上半年图文记录笔记(php和laravel )

待完善 专栏收录该内容
24 篇文章 0 订阅

这篇笔记,是自己学习的学习大杂烩,主要用于记录,方便自己查找,其中有些,现在自己看起来都有点好笑,因为错的太低级了,不过这也是成长,后面会梳理好的。

一、php 方面

##1.php环境搭建

os mac 环境搭建:

 php -v  版本

 安装:brew search php  ,brew install php72
我装的7.2 的版本:
关闭终端,在执行 php -v 就可看见是 最新安装的 7.2  版本


@@2. 命令行 和 工具 

--------------- 创建 h-w  php项目

pwd  看文件路径
php php文件   命令运行


服务器 查看:php -S localhost:3000

@@3.php 配置修改
http://localhost:3000/phpinfo.php

##2.初识别 php
-----------------------初始化 php 和html 结合

@@1. php 注释
 //认识 php (单行注释)

        /**
         * 多行注释
         */

@@2.php 变量
$变量名   :  变量名区分大小写 ,不能以数字开头
------------------php 变量的使用 图

@@3.php 字符串 操作
---------php 字符串 操作  图 ,基本跟java一样

单字符串: “sss” ,’sss‘

多行字符串(Heredoc): <<< LLllwe
 we2323
 232323;

@@@3.1  去掉多余的空格trim函数
   <?php
      $email="  zhang-rong@hotmail.com  ";
      var_dump(
          $email,
          trim($email), //去掉字符串所有的空格
          ltrim($email), //去掉字符串左边的空格
          rtrim($email) //去掉字符串右边的空格
      )
    ?>

--------------- 输出 结果--图

@@@3.2 字符串 大小写转换 :
strtoupper("aa") //小写转大写
strolower("sE") // 将大写转小写
ucfirst(" how are your doing?") //字符串 首字大写
ucwords("how are your doing?") //字符串 全部首字大写
echo addslashes(“ we' re innnn”) //自动转单引号
echo  stripslashes(" We\' re ninghao") //自动转转的 操作显示出来
 

@@@3.3  从哪里截取到哪里
strstr("zhang-rong@hotmail.com",'@',true  )//输出 @hotmail.com ,true不 区分大小写

strrchr(“blog.zhangrong.net”,‘.’) ;  //从后往前 找第一个.  ,输出 .net

查找指定的字符串,在字符串的第一个位置:
strpos("blog.zhangrong.net",'.') // 输出  4  最前开始查找

strrpos("blog.zhangrong.net",'.') //输出 12   最后开始查找


@@@3.4  字符串替换
str_replace('替换字符串:宁浩',"替换后的文字","操作字符串");
多个替换:
str_replace(array('<title>','<artist>'),array($title,$artist));
<?php
      $title="海阔天空";
      $artist='Beyond';
      $lyric='今天我,寒夜里看雪飘过,怀着冷却了的心窝飘远方。<title> -<artist>';
      echo str_replace(array('<title>','<artist>'),array($title,$artist));
    ?>

##3.php 数组 操作知识


<?php
 $tracks=array('张荣','张三','李四','早晚火车');
 $tracks[]='海子';

 //函数式 ,数组添加数据 (数组名,内容)
 array_push($tracks,'文澜','家乡');

 //函数式 ,数组移除最后一个数据
 array_pop($tracks); //本来最后一个是家乡的,移除之后,只有文澜是最后一个


//函数式 ,数组移除第一个数据
 array_shift($tracks);//删除张荣这条数据


//函数式 ,数组移除指定项
unset($tracks[1]);// 移除以后坐标不会变化


//关联数组  类似 java 的map
$album=array(
    'title' =>'继续革命',
    'release_data' => '1992-07-08',
    'artist' => 'Beyond'
);

//嵌套数组
$album_qt=array(
    'title' =>'继续革命2',
    'release_data' => '1992-07-08',
    'artist' => 'Beyond2',
    'tracks' => array('张三','李四')
);

//检查关联数组  中是否包含 某项(key)
$result=array_key_exists('artist',$album_qt); //key,数组
if(resule){
  echo '包含';
}else{
    echo '不包含' ;
}

//检查关联数组 中是否包含 某项(value)
$result_bhvlaue=in_array('继续革命2',$album_qt);//bool值
echo '  ,  '.$result_bhvlaue;

//判断该值 在那个位置
$result_wz=array_search('继续革s命2',$album_qt);
echo '  ,  '.$result_wz; //不包含,会输出为空 


//对数组进行 排序
$some_numbers=[3,6,1,11];

//排序数组,排序方式(SORT_NUMERIC数字,SORT_STRING字符串)
sort($some_numbers,SORT_NUMERIC); //升序
rsort($some_numbers); //降序
asort($some_numbers); //索引坐标 不变的降序排序
arsort($some_numbers); //索引坐标 不变的升序排序
ksort($some_numbers); //升序,字母排序
krsort($some_numbers); //倒序,字母排序

//控制指针
current($album_qt);//获取当前指针位置
next($album_qt);//指针移动到下一个位置
prev($album_qt);//指针移动到上一个位置
end($album_qt);//指针移动最后一个位置
reset($album_qt);//指针移动第一一个位置
each($album_qt);//查看当前指针的内容

//函数处理数组中的每一项
array_walk($album_qt,function(&$value,$key){
     $value='#'.$value;
});

//数组的并集,交集,差集
$a=['苹果','机子'];
$b=['苹果','西瓜'];
array_merge($a,$b);//并集
array_unique(array_unique($a,$b));//去重
array_intersect($a,$b);//交集
array_diff($a,$b);//注意前后,差集 这次输出机子
array_diff($b,$a);//注意前后,差集 这次输出西瓜

var_dump(

);


 echo '<pre>';
 var_dump(
     $tracks,
     $album,
     $album_qt,
     $some_numbers
 );
 echo '</pre>';
 //输出关联数组 的值
 echo $album['title'];

 //输出嵌套数组中的数据
 echo $album_qt['tracks'][1];

##4. php 流程控制语句

<?php
/*
 *  流程控制语句
 */

 $user_name='张荣';
 $user_role='admin';
 $is_login=true;


 //if 语句
 if($is_login){
     echo '你好:'.$user_name;
 }else{
     echo '请先登录...';
 }

 //if,elseif , else  语句
if($is_login && $user_role==='admin'){
    echo '你好管理员:'.$user_name;
}elseif($is_login){
    echo '你好:'.$user_name;
}else{
    echo '请先登录...';
}

//switch 语句
$rate=7.3;
switch ($rate) {
    case $rate>8:
        echo '还不错的好电影';
        break;
    case $rate>5:
        
        break;
    case $rate>6:
        echo '挺一般的,看看就行了';
        break;
    default:
        echo '浪费时间,还是别看了';
        break;
}

//while 循环语句
$number=10;
while($number>=1){
   echo '<br>'. $number . '<br>';
   $number=$number-1;
}

//for循环
for($i=0;$i<10;$i++){
    echo 'for值:'.$i.'<br>';
}

//foreach 循环
//遍历一般数组
$tracks=array('长成','农民','不可说','想怎么样');
foreach($tracks as $item){
    echo $item . '<br>';
}

//遍历关联数组
$abc=array(
    'a'=>'a的值',
    'b'=>'b的值',
    'c'=>'c的值'
);
foreach($abc as $key => $value){
    echo $key .':'.$value.'<br>';
}

##5.表单,会话

 

##6.函数和 数据库

&&=====1.  函数
<?php
/**
 * 函数操作专用类
 */

 //定义函数(无参)
function say_hello(){
     return '您好';
}

 //定义函数(带参)
 function say_hello_cs($name){
   return '您好'.$name;
 }

 
//使用函数
echo say_hello();
// echo say_hello_cs('zhangrong');

//定义操作函数
function say_list($listData,$layout='ul'){
    if(is_array($listData)){
       $lists='';
       foreach($listData as $item){
           $lists .='<li>'.$item.'</li>';
       }

       return  "<$layout> $lists</$layout>";

    }

    return '请提供数据类型的数据';

}

$tracks=array("杨志","想你了","惦记你的人:荣");
echo say_list($tracks,'div');


//指定参数的函数
function make_link($attributes=array()){

   return '<a href="" '.$attributes['url'].'">' .$attributes['title'].'</a>';
}
echo make_link(array('url'=>'http://zhang-rong.com','title'=>'宁皓网'));


//全局变量和局部变量
$title='继续革命';
function get_title(){
    global $title;//处理全局变量,使函数能使用
    $lable='专辑名称';


    return $title;
}

echo get_title();


&&=====2. 数据库

<?php

// $link=mysqli_connect(
//     'qdm222582463.my3w.com',
//     'qdm222582463',
//     'ZjM99999',
//     'qdm222582463_db'
// );
// if(!$link){
//     printf("不能连接到数据库:".mysqli_connect_error());
//     exit;
// }else{
//     echo '数据库连接成功!'.'<br/>';
// }

try {
    $db_op=new PDO('mysql:host=qdm222582463.my3w.com;dbname=qdm222582463_db;port=3306;charset=utf8',
    'qdm222582463','ZjM0099999');

    //## 执行一个 sql
    $statement=$db_op->prepare(
        'INSERT INTO php_posts(title,content) VALUES (?,?)'
    );

    //插入数据
    $title='php插入数据';
    $content='php插入的内容';
    $statement->bindParam(1,$title);
    $statement->bindParam(2,$content);

    //执行sql
    $statement->execute();


     //## 执行一个 sql 指定占位符的
     $statement_two=$db_op->prepare(
        'INSERT INTO php_posts(title,content) VALUES (:title,:content)'
    );

    //插入数据
    $title_two='占位,php插入数据';
    $content_two='占位,php插入的内容';
    $statement_two->bindParam(':title',$title_two);
    $statement_two->bindParam(':content',$content_two);

    //执行sql
    $statement_two->execute();


    //## 执行一个 sql 用关联数组来处理绑定
    $statement_two=$db_op->prepare(
        'INSERT INTO php_posts(title,content) VALUES (:title,:content)'
    );

    //插入关联数组
    $data=[
        'title'=>'海上钢琴师',
        'content'=>'顶顶顶顶'
    ];

    //执行sql
    $statement_two->execute($data);

    //## 执行一个 sql 来查询数据
    $statement_cx=$db_op->prepare(
        'SELECT * FROM php_posts'
    );

    $statement_cx->execute();//执行查询
    $statement_cx->setFetchMode(PDO::FETCH_ASSOC);//统一查询类型

    // echo '<pre>';

    // //处理查询的数据
    // var_dump(
    //    $statement_cx->fetch(),
    //    $statement_cx->fetch(PDO::FETCH_NUM),//数字类型
    //    $statement_cx->fetch(PDO::FETCH_ASSOC), // 关联数组类型
    //    $statement_cx->fetch(PDO::FETCH_OBJ) //对象类型

    // );
    // echo '</pre>';

    //输出 所有查询的内容
    while($row=$statement_cx->fetch()){
        echo 'title:'.$row['title'].'    ,content:'.$row['content'].'<br>';
    }


} catch (PODException $th) {
    echo $th->getMessage();
}

##7.面向对象

##8.包管理工具和设计模式
&&1. composer :php 包管理工具
https://getcomposer.org/download/
安装操作:
进入到桌面,命令行,执行
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

执行成功:会在桌面有一个composer.phar 文件
通过php composer.phar 可运行命令,然后将这个文件添加到系统的目录:
------------------操作图

 


echo $PATH  
sudo mv composer.phar /usr/local/bin/composer

&&2.安装动态依赖包:
官网:packagist.org  ,在里面进行搜索
https://packagist.org/packages/monolog/monolog
如:项目执行:composer require monolog/monolog 这样安装
安装之后,会在项目新增vendor文件夹,和composer.lock文件


&&3. 设计模式
详情看 php-demo的代码

&&4.图片杂记

 

 

二、laravel方面

##1.路由和控制器
&&1.laravel 的安装
通过 Composer 安装 Laravel 安装器:composer global require "laravel/installer"

配置环境变量:
vim .bash_profile
添加:
// #laravel 路径
export PATH=$PATH:/Users/zhangrong/.composer/vendor/bin
生效:source .bash_profile

项目创建:laravel new laravel-5-demo  (laravel-5-demo为项目名称)
运行项目:进入到创建的项目,php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
打开http://127.0.0.1:8000 ,启动完成

 

&&2.路由使用
----------------简单定义路由


Route::get('/', function () {
    return view('welcome');
});


//movie 相关接口
Route::get('movie', function () {
    return '获取电影列表';
});

Route::put('movie', function () {
    return '修改电影...';
});


Route::post('movie', function() {
    return '发布电影...';
});


Route::delete('movie', function() {
    return '删除电影...';
});

//自定义请求方法
Route::match(['get', 'post'], 'moviediy', function () {
    return 'get和post都行的自定请求方法';
});

//所有请求方法都能用
Route::any('movieAny', function () {
    return '所有方法都能用:电影';
});

//带参数的接口
Route::get('movie/{id}', function($id) {
    return '电影'.$id;
});

//带多个参数(可空的)接口 (movie_id? 加问号代表可空)
Route::get('movie/{id}/rew/{movie_id?}', function ($id,$movie_id=null) {

    return '电影'.$id.'里面的影评'.$review_id;
});

//对参数进行限制的接口
Route::get('movie/{id}/rewew/{movie_id?}', function ($id,$movie_id=null) {

    return '电影'.$id.'里面的影评'.$review_id;
})->where(['id'=>'[0-9]+','movie_id'=>'[0-9]+']); //参数只能是数字

//重定向接口
// //自定可重定向的名称  :login 方法一
// Route::get('users/login', ['as'=>'login',function () {
    //  return '用户登录:方法一';
// }]);

// //自定可重定向的名称  :login 方法二
Route::get('users/profile', function() {
    return '用户登录:方法二';
})->name('login');


Route::get('users/profile', function () {
    //使用重定向
    return redirect()->route('login');//login是重定向的方法名称

});

//一组接口
Route::group(['prefix' => 'groupName'], function() {
    //prefix 代表前缀 groupName为访问的组名如:http://127.0.0.1:8000/groupName/*

    
    Route::get('user', function() {
        return '组中接口一:管理用户';
    });//访问:http://127.0.0.1:8000/groupName/user

    Route::get('content', function() {
        return '组中接口二:管理内容';
    });//访问:http://127.0.0.1:8000/groupName/content
    
});

&&2.控制器

 

##2.视图和模板

&&1.视图

//做视图操作
Route::resource('myview', 'ViewController@showView');

if(view()->exists('view.mylist')){
        return view('view.mylist',[
            'title'=>'电影列表', //传递的数据
            'notifications'=>'5'
        ]);  //方式一

        // return view('view.list')->with('title','电影列表'); //传递数据  方式二

        //方式 三:通过 ComposerServiceProvid 中boot 来进行数据绑定

        //使用继承布局
        // return view('view.sun_master');

      }

&&2.模板
@extends('layout.master') //layout 下面的 master.blade.php 文件
@section('title',$title) // 头部数据

//子类,重写父类的 head方法
@@section('head')
     @parent //加上保留父类的关键字 ,有两个链接,不加,就只有重写的子类链接
     <link rel="stylesheet" href="movie-page.css">
@endsection

//镶入其他模板
@@include('layout.head',['name'=>'data'])

@section('content') //view 数据

    <h1> {{$title}} </h1> //php传递的数据
    <h1> @{{$title}} </h1>   //不使用php传递的数据,使用js传递的数据 在前面加@

    <h1> {{$title or '小张'}} </h1>  //非空判断,空显示后面的默认值

    <h1> {!! $title !!} </h1>  //不转换内容 ,直接显示title为html的内容,使用{!! html文本 !!}

    //条件控制指令
    @if(false)
     <p>你好,你好,你好</p>
    @elseif ($false)
     <p>hao,好,好</p>

    @else
    <p>hao111,好111,好111</p>
    @endif

    //也支持 @for  @foreach  @while
    @foreach ( $listData as $item )
        <li>{{ $item  }}</li>
    @endforeach

    @each('view.item', $listData, 'item', 'view.empty')

@endsection

##3.数据库和token身份验证

 

 

后端拓展学习:

系统了解laravel :
https://www.codecasts.com/learn/laravel
----------------------------------- 待完善

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值