抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

前言 一般情况下是不会有问题的,类似这样 bootstrap/css/bootstrap.min.css 或者 /bootstrap/css/bootstrap.min.css,当网站使用域名的时候后者不会出错,可是当使用本地测试时,是在http://localhost/Admin/public/admin/这样一个路径,就会出现加载位置出错. 说明 解决方法有几个 (没办法只能这么写,...

php下载时不想让别人看到真实的下载地址?怎样隐藏下载文件的真实地址?首先要取得下载文件的URL,这里假设你通过PHP的操作取得文件的URL地址,变量为$URL代码如下: 123456$file_size = filesize($url); header("Content-type: application/octet-stream"); header("Acc...

前言

从这里开始

1
2
3
4
5
6
  public function __call($method, $parameters)
{
//这里注意 $this->guard() 返回的是个实例,call_user_func_array()第一个参数如果是类,
//则需要数组第一个是类的实例变量
return call_user_func_array([$this->guard(), $method], $parameters);
}

简介 这两个模块附带函数都是对多进程任务开的. 而且这两个模块好像只能在linux下安装,windows下是不支持的. 参考文档php的POSIX 函数以及进程测试的深入分析centos安装php-posixPOSIX 官方文档 PHP的pcntl多进程基于PCNTL的PHP并发编程进程控制 官方文档

简介PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP 扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。与以往的多数...

前言

Event事件总是晕晕的,反复看了几遍,终于纠正了我的惯性思维,我一直认为监听类是起到监听作用.其实错了,事件类是相当于触发,监听某个动作.而监听类是响应这个动作的具体操作.从另一个方面讲,监听类其实监听的是事件类的触发.这下就清晰点了.下面把整个事件所需要的文件都简单说明下.

简要说明

laravel事件的主要文件

  1. Event.php (创建事件类,这个文件最主要的作用就是注入,其他的功能暂时没发现)
  2. Listener.php (创建监听类,这个文件的主要作用就是响应事件类,当事件触发了进行响应操作)
  3. EventServiceProvider.php (关联事件与监听的文件)

前言

也是发现了两个插件,rap2hpoutre/laravel-log-viewerARCANEDEV/LogViewer.第一个简单些,界面显示也简单些.第二个丰富些,不过第二个测试时不好使,可能是因为我装了两个有点冲突吧.

前言

发现两个不错的语音包,caouecs/Laravel-lang和overtrue/laravel-lang.第一个是第二个的基础,只是做了一下自动化

caouecs/Laravel-lang

其实使用很简单,就如下所说,把项目下载到项目里,然后把要使用的语言包,放到resources\lang里,然后改写config\app.php里的语言设置就ok了

前言

还不错的插件,减少了开发面包屑功能的麻烦,不过还得自定义个文件,每个route都得写上下关系才行.还是不能特别便利,不过有总比没有好.

使用方法

  • 安装

    1
    $ composer require davejamesmiller/laravel-breadcrumbs

前言总结一下好用的插件,省着忘记. 好用插件Api响应格式插件laravel5-fractalFractal官方网站 权限管理插件zizaco/entrust 面包屑插件davejamesmiller/laravel-breadcrumbs 提示翻译插件caouecs/laravel-lang 日志统计后台arcanedev/log-viewer 日志显示 和上面那个差不多 不过不用后台配...

前言

最近需要做后台所以找到这个插件.下面的文章内容稍微有点老,但大致讲解的没问题,还是结合项目仓库一起看就明白很多了.

简单说明

针对那篇文章没有提到的东西简单说明下

  • 注意引入文件,升级后很多名称变了,所以一定要参考文档.

一些私有属性说明 123456789101112131415161718//注册成功后挑战地址protected $redirectPath = '/';//登录成功后跳转地址protected $loginPath = '/';//但是有个问题当登录成功后 还是进入auth/login的时候 还是会默认跳转到/home路径下//重置密码后跳转路径pr...

模型类一些私有属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//指定表名  
protected $table = 'my_flights';

//这个限制只决定怎么插入到数据库 不决定怎么取出数据
protected $dateFormat = 'Y-m-d';

//白名单 可以直接创建数据的字段
protected $fillable = ['title','intro','content','published_at'];

//黑名单 除此之外的字段都可以直接创建
protected $guarded = ['created_at','updated_at'];

//设置字段为Carbon实例 可以直接使用Carbon方法
protected $dates = ['published_at'];

//属性转换类型 key是字段名称 value是要转换成的类型
protected $casts = ['is_admin' => 'boolean',];

//数组转换 把数组转化成JSON格式存入数据库 读取时自动转化成数组
protected $casts = ['options' => 'array', ];

//隐藏模型的一些属性 直接输出的时候是无法看见的
protected $hidden = ['password'];

//显示白名单 那些字段直接输出是可以被看到的
protected $visible = ['first_name', 'last_name'];

//追加字段到返回数组中 而且是数据库没有的字段 而且需要访问器的帮忙
//但这个不理解有什么用处 他其实是通过已有字段经过判断后输出 两个字段都能返回 只不过这个返回是布尔值
protected $appends = ['is_admin'];

前言

phpstorm是个非常棒的IDE,高度定制化并且功能丰富.但因为没有正式的汉化版,所以很多便捷的使用方式,还没有被大家了解到.看来以后要多研究啊.最近使用的时候就发现了问题,一些图标不知道他具体的含义,本来是很好的提示作用却打了折扣,这里把英文翻译过来,以便日后记忆.

第一步 安装composer 从这里 https://getcomposer.org/download/ 后直接安装即可 切记需先安装php 并且版本支持做开发项目 第二步 配置composer镜像仓库composer config -g repo.packagist composer https://packagist.phpcomposer.com输入这行代码即可 你可以在任意位置打开命...

###用composer建立项目
莫名其妙的5.1.11的库文件少了 vendor 这个目录所以拿composer无法创建了 只好创建5.2 或者下载一键安装包

1
composer create-project laravel/laravel myapp --prefer-dist

###配置项目环境

  • 配置数据连接
    打开.env文件进行配置 (这个必须先行配置 要不下面插件安装会提示错误) 还有就是config里的database.php的配置文件一般是用于多数据库连接时在里面进行修改
  • 初始化composer
    在配置里搜索composer然后把 composer.phar地址填写进去 没有的话 就按照提示下载一个或者安装一下 (C:\ProgramData\ComposerSetup\bin\composer.phar 这是我的位置仅供参考)然后点确定初始化完成
  • 配置Command Line Tool Support
    1 点击添加 选择Tool based on Symfony Console 确定
    2 起一个别名 然后添加脚本地址 也就是artisan所在位置 如果php.exe不在运行环境里 那也得选择地址
    3 完成后可以点编辑选择是当前项目下使用 还是全局使用(上次我是选择当期项目下 这次新建立项目就又装了一遍 这次我选全局了 看看下次开项目是不是还用再装一遍 已经正事了是全局的 第二次不用配置了 看来我又错了 虽然为全局的不用安装 但是命令还在那个命名空间 所以生成的文件还在老的项目里 而不能生成在新的项目所以没用)
    4 配置文件可以复制进去 但是必须替换里面的项目名 要不会报错
    ##注意
    Command Line Tool Support 在laravel 5.2里配置artisan会报错 具体原因不明 也许是我的phpstorm版本的问题 我这个一直没升级 还是10.0.1 其实命令是好使的在cmd里 只不过还得输入那么多 所以项目降级到laravel 5.1了 这次遇到的麻烦太多了 5.1还不能用composer生成线上的库不知道什么问题缺少vendor 所以只能用一键安装包来新建项目 而且5.2插件支持也变了所以原本打算用5.2最后也是放弃了

前言

接口一直让我很晕,下面这篇文章有了很好的说明.
现代 PHP 新特性系列(二) —— 善用接口
这里我就再简单化下,以便我能快速记忆.


简要说明

接口说直观点就是模具,或者说API

  • API说
    说他像API,是因为他提出来所有功能.你知道接口有什么,你就知道你能做什么了

  • 模具说
    说他像模具,是因为接口的功能是统一的,一致的.但是实现的方法可以不同.就像你做一个花瓶的模具,但是根据填充的材料不同,可以做出不同的花瓶.什么玻璃的,陶瓷的,珐琅的.虽然他们长的都一个样.

接口的作用

所以接口的作用,就是解耦.

比如一个DB类流程:

  • DB操作类,根据DB接口提供的功能,进行具体功能开发.
  • DB实例化的时候,必须传入符合DB接口的DB驱动类.(符合接口保证功能可用,而且不符合接口也会报错)
  • DB操作类,根据传入不同DB驱动实例,达到解耦的作用.(因为功能名称都是统一的)

启动流程

xss 编辑跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的 主要防范:过滤客户提交内容,不能信任客户提交内容.目前来看...

###参考 artisan make:model 而写的 make:view 新建blade模版

  • MakeView.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php

    namespace App\Console\Commands;

    use Illuminate\Console\Command;
    use Illuminate\Filesystem\Filesystem;

    class MakeView extends Command
    {
    /**
    * The name and signature of the console command.
    *
    * @var string
    */
    protected $signature = 'make:view {name : like content or article/content}';

    /**
    * The console command description.
    *
    * @var string
    */
    protected $description = 'Create a new blade page';

    /**
    * The type of class being generated.
    *
    * @var string
    */
    protected $type;

    /**
    * 文件系统
    * @var Filesystem
    */
    protected $files;
    /**
    * Create a new command instance.
    *
    * @return void
    */
    public function __construct(Filesystem $files)
    {
    parent::__construct();

    $this->files=$files;
    }

    /**
    * Execute the console command.
    *
    * @return mixed
    */
    public function handle()
    {
    //
    $path = $this->getPath($this->argument('name'));

    if($this->alreadyExists($path)){
    $this->error($this->type.' already exists!');
    return false;
    }

    $this->makeDir($path);

    $this->files->put($path, $this->getStub());

    return $this->info($this->type.' created successfully.');
    }

    /**
    * Get path
    * @param string $name
    * @return string
    */
    protected function getPath($name){
    return base_path('resources/views')."/".$name.".blade.php";
    }

    /**
    * 模版是否已经存在
    * @param $path
    * @return bool
    */
    protected function alreadyExists($path){
    return $this->files->exists($path);
    }

    /**
    * 建立目录
    * @param $path
    */
    protected function makeDir($path){
    if (! $this->files->isDirectory(dirname($path))) {
    $this->files->makeDirectory(dirname($path), 0777, true, true);
    }
    }

    /**
    * 获得模版内容
    * @param string $stub //现在默认为bootstrap风格 以后还可以添加妹子UI风格模版等等
    * @return string
    * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
    */
    protected function getStub($stub='view.stub'){
    return $this->files->get(__DIR__.'/stubs/'.$stub);
    }
    }

  • ContactServiceProvider 服务提供者

    这里面 registerContact() 其实是没用的 应该是调用其他服务功能时才有用.
    但是这个简单功能完全可通过router和controller完全能实现所以 感觉不需要写个什么服务了.
    暂时这么理解吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php namespace Jai\Contact;

use Illuminate\Support\ServiceProvider;
use Illuminate\Routing\Router;

class ContactServiceProvider extends ServiceProvider
{
protected $defer = false;
public function boot()
{
//注册模版地址 这里一定要使用realpath() 不是绝对路径就会出错
$this->loadViewsFrom(realpath(__DIR__.'/../views'), 'contact');
//注册包路由
$this->setupRoutes($this->app->router);
// this for conig
$this->publishes([
__DIR__.'/config/contact.php' => config_path('contact.php'),
]);
}

/**
* Define the routes for the application.
*
* @param \Illuminate\Routing\Router $router
* @return void
*/
public function setupRoutes(Router $router)
{
//设置路由命名空间
$router->group(['namespace' => 'Jai\Contact\Http\Controllers'], function($router)
{
require __DIR__.'/Http/routes.php';
});
}

public function register()
{
$this->registerContact();
config([
'config/contact.php',
]);

//这两句是从stripe里摘出来的 绑定名称 以后注入用
$this->app->singleton('command.cashier.table', function ($app) {
return new CashierTableCommand;
});
//这里相当于注册一个command命令 参数:这里就用到上边的绑定注入了
$this->commands('command.cashier.table');
}

private function registerContact()
{
$this->app->bind('contact',function($app){
//这个绑定毫无意义 也许可能是没有用到
//return new Contact($app);
return new elick($app);
});
}
}

  • 第一步开通测试

    在我的产品中 点击为测试 然后添加要测试的项目 要不然会提示无权限 这里选择网关支付

  • 下载测试证书

    测试证书要从 个人中心 测试参数哪里下载 https://open.unionpay.com/ajweb/account/testPara
    商户私钥证书 必须安装一下 要不会会出错

  • 编写代码

  1. config\laravel-omnipay.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php

    return [

    // The default gateway to use
    'default' => 'paypal',

    // Add in each gateway here
    'gateways' => [
    'unionpay' => [
    'driver' => 'UnionPay_Express',
    'options' => [
    'merId' => '777290058128659',
    'certPath' => storage_path('app/unionpay/certs/700000000000001_acp.pfx'),
    'certPassword' => '000000',
    'certDir' => storage_path('app/unionpay/certs'),
    //付款完成后跳转会商家页面地址 两个好像可以写同一个地址
    'returnUrl' => 'http://114.254.183.127/omnipay/public/unionpay/return',
    'notifyUrl' => 'http://114.254.183.127/omnipay/public/unionpay/notify'

    ]
    ]
    ]

    ];

Alt+Shift+X
命令行工具 (这个和Terminal有区别这个是laravel自带一些命令 这个好像的装laravel插件才可以用)

Ctrl+F12
呼叫出方法列表

Ctrl+Alt+S
呼出配置

Ctrl+P
快速打开文件

Ctrl+Shift+A
搜索所有配置选项

Ctrl+Shift+Z
撤销刚才的撤销也就是windows上的 Ctrl+Y

Ctrl+Q
显示代码注释

Ctrl+E
最近打开文件