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

一、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
----------------------------------- 待完善

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

  1. 梳理19年上半年图文记录笔记(ios篇)

    这篇笔记,是自己学习的学习大杂烩,主要用于记录,方便自己查找,其中有些,现在自己看起来都有点好笑,因为错的太低级了,不过这也是成长,后面会梳理好的 一.极客和我赢职场普及的一些基础概念 ##1.环境搭 ...

  2. mysql8.0.19.0_分享MySql8.0.19 安装采坑记录

    上篇文章给大家介绍了MySql8.0.19 安装过程,需要的朋友可以点击查看.https://www.jb51.net/article/178988.htm 1.ERROR 1820 (HY000): ...

  3. 第一次使用最新开发的在线编辑器讲课记录笔记

    2019独角兽企业重金招聘Python工程师标准>>> 第一次使用最新开发的在线编辑器讲课记录笔记,效果: 信息地址: http://www.phpkhbd.com/note/93 ...

  4. 使用markdown语法记录笔记 1613957838

    使用markdown语法记录笔记 1613957838 标题 # 一级标题 ## 二级标题 ###### 六级标题 引用 > 引用内容 无序列表 使用-号 - 列表项目 - 列表项目 使用*号 ...

  5. mysql8.0依赖_分享MySql8.0.19 安装采坑记录

    上篇文章给大家介绍了MySql8.0.19 安装过程,需要的朋友可以点击查看.https://www.jb51.net/article/178988.htm 1.ERROR 1820 (HY000): ...

  6. 使用gitbook记录笔记

    使用gitbook记录笔记 背景 Windows安装git book环境 安装node.js 长期支持版 npm安装gitbook 初始化电子书目录 编译图书 输出成电子书格式 书籍提交到git 背景 ...

  7. 能用图文记录生活日常的日记APP有哪些推荐?

    为了能全面记录自己成长的轨迹,我们通常会采用记日记的方式来留存回忆,以方便自己能随时查看,而且在现在我们还可以借助手机app记录日记,这样便能达到实时记事.随时查看的目的,既然如此,那么当下有能用图文 ...

  8. 记录几个常用的记录笔记软件

    记录几个常用的记录笔记软件 印象笔记 有道云笔记 为知笔记 oneNote笔记 goodNote笔记

  9. #飞特STS3215舵机测试与使用记录--附带基础样例-记录笔记-第三章

    ##飞特STS3215舵机测试与使用记录--附带基础样例-记录笔记-第三章 前言说明 协议与后期验证 细节以及遇到问题 (1)舵机可以摆动问题 (2)舵机是否能到达指定位置 (3)舵机在外力会出现移动 ...

  10. Gradle4.4记录笔记

    Gradle4.4记录笔记 Gradle相关目录 gradle-wrapper.properties gradle-wrapper.jar build.gradle 三级目录 Gradle相关目录 ├ ...

最新文章

  1. linux下卸载自带jdk,重新安装jre运行环境
  2. StaticFactoryMethod_Level1
  3. 一张图清晰明了将Java面向对象全部搞定!
  4. 线程高级应用-心得9-空中网的三道面试题,考察应试者的线程掌握的深度
  5. photos怎么改成中文_Win10怎么设置中文语言?Win10设置语言为中文的方法图解
  6. Tomcat环境部署以及tomcat多实例搭建(同一台机器)
  7. springboot代码生成器,一款经典版的java代码生成器
  8. 数据库系统概论第五版_第二章:关系数据库
  9. AngularJS页面【uib-dropdown】控件在模态窗口(弹出窗)中无法使用问题
  10. 使用Java程序实现计算器
  11. RT-THREAD + HC32F460 + AIR724 + ALIIOT
  12. 实现自己人生小目标之微信抢红包项目
  13. 逆向爬虫14 Mongo入门
  14. Python 批量合并多个txt文件
  15. Python编程沙龙召集令
  16. 项目实战|史上最简单的springboot 整合elk教程,实现日志收集(带视频哦)
  17. Vista Beta下载
  18. rabbitmq报错:inequivalent arg ‘durable‘ for queue ‘ack_queue‘ in vhost ‘/‘: received ‘true‘ but curren
  19. Chrome插件开发入门:如何实现一键上班赖皮
  20. 计算机用户界面设计方法,2012年计算机二级VB用户界面设计练习题及答案

热门文章

  1. 免费PBootCMS采集支持聚合文章采集插件
  2. QTTabBar安装与使用: 更胜浏览器的Windows平台浏览文件方式
  3. 最新IT段子手详解MyBatis遇到Spring 秒学Java SSM开发大众点评 难度中级
  4. 我的世界java怎么改随机刻度_我的世界随机刻速度指令是什么
  5. Quorum简介部署
  6. 基于jeecgboot的flowable流程增加节点表单的支持(二)
  7. bilibili弹幕爬取
  8. uva-10041-水题
  9. java动物继承_java 编码实现动物世界的继承关系:动物(Animal)属性:名称(name)具有行为:吃(eat)、睡觉(sleep)...
  10. 微信小程序注册入口和注册流程(完整版图文教程)