精华内容
下载资源
问答
  • 最近刚接触laravel框架,首先要写一个跨域单点登录。被跨域问题卡了两三天,主要是因为跨域这快不了解,就在刚才有点茅塞顿开感觉,我做一下大概整理,主要给一些刚接触摸不着头脑看,哪里写得不对,也...

    最近刚接触laravel框架,首先要写一个跨域的单点登录。被跨域的问题卡了两三天,主要是因为对跨域这快不了解,就在刚才有点茅塞顿开的感觉,我做一下大概整理,主要给一些刚接触摸不着头脑的看,哪里写得不对的,也请大神指点,言归正传:

    1.先用通俗易懂的话说下原理和几种跨域的方式,因为网上一搜都是追对某一种方式的专业性解答,我是消化不了多少。

         第一种:jsonp 方式,这是什么方式呢,先要说一说JavaScript,在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略),也就是说JS只能访问当前项目的页面。AJAX是基于XMLHttpRequest(这个请自行百度了解)实现的,所以AJAX 一类的请求肯定也是不能跨域请求的。 然后jsonp方式呢,虽然一般是再$.ajax 方法里面设置dataType: 'jsonp',但是发送请求出去的时候,已经跟ajax 没多少关系了,不管你设置type : get 还是 post ,它都是通过get发送请求的,可以说这个已经属于 jsonp 协议了,这是个非官方协议。发一下代码:

    $.ajax({ 
    url: 'http://lrz.laravel.com/auth/login', 
    type: 'get',
    dataType: "jsonp", 
    jsonp: "callback",
    data: {user_id:user_id,name:name},
    success: function (data) {
    console.log(data); 
    }, 
    error:function() 

    alert("error"); 

    })

    当设置dataType 为 jsonp的时候就是jsonp请求了,然后 下面的 jsonp: "callback", 什么意思呢,jsonp方式会在客户端注册一个 js 的 callback方法,并通过GET方式发送到服务器,见连接:  

    1. Request URL:

      http://lrz.laravel.com/auth/login?callback=jQuery21307739646233126818_1491549029207&user_id=1&name=%E5%90%95%E7%91%9E%E6%94%BF&_=1491549029208

    jQuery21307739646233126818_1491549029207 这个方法就是客户端注册的。

    然后服务器端怎么处理呢,接收 callback 的值,并返回一个JS方法的方式告知客户端,就是  return jQuery21307739646233126818_1491549029207(json_encode([1,2])); 这样的方式,客户端才能通过success: function (data) {} 获取到返回的值了,这就是通过JS注入的方式实现的 跨域请求,顺便我发一下 laravel 的返回方式:

    $callback = $request->input('callback');

    $arr = array('status'=>'200');
    $user_id = $request->input('user_id');
    $name = $request->input('name');
    return response($callback.'('.json_encode($arr).')')->withCookie(Cookie::forever('name',$name))->withCookie(Cookie::forever('user_id',$user_id));

    这么写是为了生成服务器端的cookie,用不着的小伙伴就忽略。

     

    第二种方式就是通过html5 WebSocket标准 W3C方式,这个我一开始跟JSONP 弄混了,这个跟jsonp 又没关系了,这种方式通过设置一下头部信息就能实现跨域了,

    Access-Control-Allow-Origin : 指明哪些请求源被允许访问资源,值可以为 "*","null",或者单个源地址。

    服务器端主要设置这个值就能让其他的网址访问他了,用AJAX就能拿到服务器的数据了。关于laravel的开启跨域方式可以看这篇文章: http://www.tuicool.com/articles/3yEFVz2,我就不多说了。

     

    我的需求是让用户中心在多个子站生成 cookie,然后cookie是服务器告知浏览器生成的,所以理论上讲POST是不能让其他网站生成cookie的,所以我这里必须使用jsonp拟跳转的方式,比如淘宝的用户登录就是用这种方式。 还有一种方式是post+动态生成iframe 局部提交页面,可以参考新浪的用户登录模式。不管哪种方式要想跨域生成cookie,就需要跳转页面。

    有一篇文章说还有一种方法,跨域生成 cookie ,http://www.cnblogs.com/anai/p/4238777.html。 我没试过,有兴趣的朋友可以试试。

    第一次写总结,哈哈,就写这么多了。

    展开全文
  • 1、首先需要理解依赖注入参考文章: ...http://www.thinkphp.cn/topic/12180.html 这篇文章讲解通俗一点。 2、然后pipeline参考文章: ...理解以上两个内容,可以对laravel运行过程有一个基本

    1、首先需要理解依赖注入

    参考文章:

    1. https://segmentfault.com/a/1190000002411255
    2. http://www.thinkphp.cn/topic/12180.html 这篇文章讲解的通俗一点。

    2、然后pipeline

    参考文章:

    1. https://www.juhe.cn/news/index/id/1461
    2. http://laravelacademy.org/post/3088.html

    理解以上两个内容,可以对laravel运行过程有一个基本的理解,有利于对laravel的学习。强烈推荐认真仔细研究这两个东西。

    更新内容:
    laravel 服务提供者,门面,契约的理解
    参考文章:http://laravelacademy.org/post/769.html
    参考文章:https://www.hanc.cc/index.php/archives/136/ (facades 实现原理分析)

    展开全文
  • 所以最近我想通过对框架中源码的分析,进一步提高我设计模式的理解。 在Laravel中,服务容器是整个系统功能调度的核心,在JavaWeb中类似于ApplicationContext 。它提供了一系列在框架运行的过程中需

    写在前面的话:
    最近利用下班的空余时间看了一下Laravel框架中的源码。发现他所用到的设计方法和理念都是已经存在的。之前使用JavaWeb的时候也常用到。所以最近我想通过对框架中源码的分析,进一步提高我对设计模式的理解。

    在Laravel中,服务容器是整个系统功能调度的核心,在JavaWeb中类似于ApplicationContext 。它提供了一系列在框架运行的过程中需要的一系列服务。服务容器就是提供服务的载体,而服务是系统运行过程中需要的东西,如系统配置,文件路径等。线面先来介绍一下一些设计模式作为铺垫。

    依赖与耦合

    服务容器可以提供很多内容,而在这些功能中,解决依赖实现解耦是应用服务器的关键。其实服务容器就是一个IoC容器。IoC其实就是控制反转模式,主要用来解决系统组件间的相互依赖,这也是面向对象设计语言最避讳的点之一。

    下面都过一个示例来说明什么是依赖,怎么解决系统对象之间的耦合:

    <?php
    //设计公共接口
    interface Play
    {
        public function go();
    }
    
    //实现不同的玩耍方案
    class Panic implements Play
    {
        public function go()
        {
            echo "去野炊";
        }
    }
    
    class Song implements Play
    {
        public function go()
        {
            echo "去KTV唱歌";
        }
    } 
    
    
    class Hiking implements Play
    {
        public function go()
        {
            echo "去徒步旅行";
        }
    }
    
    //设计公司类,该类实现休息的功能时依赖玩耍的实例
    class Company
    {
        protected $relaxMethod;
    
        public function __construct()
        {
            //Attention!!! 这里产生了依赖
            $this->relaxMethod = new Panic(); 
        }
    
        public function relax()
        {
            $this->relaxMethod->go();
        }
    }

    这里要实现的功能是公司周末的休息方案,而出去玩可能有很多方案,比如KTV唱歌,野炊,徒步旅行。代码“$this->relaxMethod = new Panic();”中实例化了野炊,于是两个代码之间的耦合就产生了。这会导致一个严重的问题,如果需求经常改变,就需要修改实例化的对象。所以我们不应该在“公司类”的内部写死了“休息方案”的初始化行为,而是把控制权交给外部负责,载系统运行期间,将这种依赖关系通过动态注入的方式实现。

    工厂模式

    休息方案的实例化过程是经常需要改变的,所以我们把这部分的职责交给外部来管理。面向对象有个设计准则叫OCP,意思是发现变化封装变化大家可看我的这篇 博客。一种简单的实现方案是利用简单工厂模式实现。示例如下:

    class RelaxMethodFactory{
        public function createRelaxMethod($name)
        {
            switch ($name) {
                case 'Panic':
                    return new Panic();
                    break;
                case 'Song':
                    return new Song();
                    break;
                case 'Hiking':
                    return new Hiking();
                    break;
                default:
                    exit('老铁,出毛病了');
                    break;
            }
        }
     }
    
     class Company
     {
        protected $relaxMethod;
    
        public function __construct($relaxMethodName)
        {
            //通过工厂产生依赖的休息方案实例
            $factory = new RelaxMethodFactory();
            $this->$relaxMethod = $factory->createRelaxMethod($relaxMethodName);
        }
    
        public function relax()
        {
            $this->relaxMethod->go();
        }
     }

    这里我们添加了“休息方案”工厂,在“公司团体”实例化的过程中指定休息的方案。但是从本质上并不能解决系统耦合的关系。表面上看似“公司团体”与“休息方案”之间的耦合没有了。但是却变成了“公司团体”与“休息方案工厂”之间的耦合。当需求增加时,我们需要修改简单工厂模式,如果依赖过多,工厂类过于庞大,不容易维护。

    IoC模式

    控制反转是将组件间的依赖关系从程序内部提到外部容器来管理,而依赖注入是将依赖通过外部以参数的形式注入,比如我们写Controller时,有时候需要访问Request对象,可以在方法中声明。
    解决系统间依赖根本是,没有用new关键字来实例化对象,不需要人为关注类之间的依赖关系,只要在容器填充过程中实现类与依赖接口之间的关系。这里类的实例化实际上与Spring容器类似。在容器中直接填充实例化对象。Laravel的服务容器指得就是这个容器,它的核心功能是IoC容器用以解决依赖注入,面对服务容器中的填充部分称为服务提供者。

    持续关注。。。

    展开全文
  • 只要一提起到PHP框架,就会出现Laravel、Yii、CodeIgniter、Zend、ThinkPHP等等一些介绍、...框架的选择没有最好的框架,只有最适合自己的框架如果拿一部分性能去衡量或选择框架,那么Java笑了如果要选最容易理解...
    只要一提起到PHP框架,就会出现Laravel、Yii、CodeIgniter、Zend、ThinkPHP等等一些介绍、一些排名、一些对比。特别在国内,Laravel和ThinkPHP有着很大的争议,Laravel永居榜首,TP性能高出Laravel多少多少倍,并拿出一些解析图等等。

    框架的选择

    • 没有最好的框架,只有最适合自己的框架
    • 如果拿一部分性能去衡量或选择框架,那么Java笑了
    • 如果要选最容易理解的框架,那非ThinkPHP莫属了,几乎不需要思考它就能懂你,然后按照你的套路玩下去
    • Laravel思维散发,不易理解,一旦理解,才能真正的体会其中的优雅,但在体会优雅的过程中会比较煎熬,从刚开始出现不是我想要的变成了这就是我想要的,它虽然有点臃肿,但它的灵活性是非常不错的,几乎不用自己再造些轮子或修补些漏洞,稳定性毋庸置疑,所以这才是它 TOP ONE 的真正原因

    快速开发是PHP的本质

    • 很多人都为PHP的前景担忧,有支持也有反对,场面一发不可收拾,但反过来想想,争论越激烈就代表有更多的人关注,所以不要低估了PHP的实力
    • PHP在性能方面确实有些短板,但性能真的差的不可接受吗?显然不是的,最重要的原因还是开发者本身技能,并且PHP也在不断升级进化,Swoole已经证明了PHP的出发点,虽然不是很完善,但至少方向是对的,负载均衡、缓存等都是提高PHP的运行性能
    • 然而,PHP的真正意义是快速开发,这是PHP从一开始就为自己定下的标签,目前仍是无可替代,无论你用哪种流行的PHP框架开发,开发速度都是杠杠的

    快速开发该如何选择

    • PHP框架的选择已经成为了一个定局,选择时都在几个流行的框架中打转,虽然有些PHPER自己造轮子造了些框架,并且各种快速开发手册,甚至有一些开源项目模板,看得多了就会发现选择其中一个作为开发都比较艰难,并且有些开发并不快速,所以基本上还是老老实实的选择流行的几个框架自己在上面造轮子还快些
    • 那么有没有真正意义上的PHP快速开发框架?TPHP框架(http://www.tphp.com)很有可能就是你所想要的答案

    TPHP框架特点

    • 居于Laravel中的Composer依赖开发, 所以TPHP不属于真正意义上的框架,它属于快速开发的一种解决办法
    • 代码简洁并极易理解,除了开发快速外,维护起来也非常简单,一目了然就能找出需要修改的代码路径
    • JS、CSS开发更简单,无需进行繁杂的目录切换,并支持SCSS
    • 后台内置代码编辑器编写代码
    • 支持数据库类型:Mysql、Sqlserver、Sqlite、PostgreSQL
    • 支持不同类型数据库之间的数据相互关联查询
    • 支持数据库字段同步(不同步数据),步骤:先备份数据库字段到本地文件 -> 文件更新到服务器 -> 服务器还原字段到数据库
    • 后台用户菜单权限管理

    TPHP框架常见问题

    • 不能以正常的MVC思维去看待TPHP框架,可能会或多或少的不习惯
    • TPHP框架目录结构有点像原生状态,可能对于习惯于使用命名空间类或函数有点不习惯
    • 因为TPHP开发实在是太简单了,无法展现代码的复杂度,所以对于喜欢高级玩法的PHPER不太习惯
    • 总之,只有“放低”自己,才能体会TPHP的魅力
    展开全文
  • laravel易于理解并且强大提供了强大的工具用于开发大型、强壮的应用。...laravel框架的运行环境是有要求的,以下运行环境的配置过程: 下载最新版的phpstudy并安装 配置phpstudy中的php.ini和httpd.conf相关...
  • laravel被称为最优雅的框架,最近正在学习中,对于用惯了thinkphp、ci框架的人来说,服务容器。服务提供者,依赖注入这些概念简直是一脸懵逼。我花了些时间梳理了一下,也不敢确定自己说的是的,如果有错误的地方...
  • 简单说一下我逻辑,我也不知道我理解sso不对。 假如三个站点 a.baidu.com b.baidu.com c.baidu.com a.baidu.com 作为验证用户登录账户。 b和c作为客户端(子系统)。 b和c需要登录时候跳转到a,并且携带...
  • 一个基于laravel和bootstrap简单用户管理,适合刚入门我们,在做过程中可以加深自己对laravel基础理解,里面存在一些问题,还未修改,比如css和js引入,表单提交地址等不规范(我是这样认为,如果你只追求功能那...
  • Laravel 是一套是易于理解并且强大web应用开发框架,用他能够开发大型应用。它具有富于表达性且简洁语法,杰出IoC、数据库迁移工具和紧密集成单元测试支持,通过这些工具可以具有构建任何应用能力。君哥...
  • 以前用CI框架对于返回值没有过多关注,但是发现使用laravel框架的时候出现了一些小问题,特意实践总结了一些常用情形,希望大家有所帮助    先理解几个概念:  1>StdClass 对象=>基础的对象  2>Eloquent 模型...
  • laravel框架数据库迁移

    2019-02-18 23:13:39
    这样做有一个问题,就是在我们开发工程中或是版本迭代过程中,我们往往会之前表结构进行调整、更改等,修改1次或两次还好,如果修改次数多了,容易忘记。数据库迁移是用文件操作数据表结构,每一次修改都会有...
  • 我目前正在将其重构为Laravel 6,并使一些后端工作现代化,但这只是我为自己做事情。 由于某种原因,我只是忍受不了看到它未完成。 使用风险自负:我无法帮助您。 是使用图像板。 它被认为是替代陈旧不佳...
  • 本篇文章给大家带来内容是关于Laravel集合简单理解,有一定参考价值,有需要朋友可以参考一下,希望你有所帮助。前言集合通过 Illuminate\Database\Eloquent\Collection 进行实例,Laravel的内核大部分...
  • 简介 Blade 是 Laravel 所提供一个简单且强大模板引擎。相较于其它知名 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码。... 后台数据处理方便,blade模板和框架之间参数传递实
  • 以前用CI框架对于返回值没有过多关注,但是发现使用laravel框架的时候出现了一些小问题,特意实践总结了一些常用情形,希望大家有所帮助  先理解几个概念:  1>StdClass 对象=>基础的对象  2>...
  • 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们Spring框架的IOC的理解以及谈谈我Spring Ioc的理解。 一、分享...
  • Laravel是一套简洁、优雅PHP Web开发框架(PHP Web Framework...简单说一下我逻辑,我也不知道我理解sso不对。假如三个站点 a.baidu.com b.baidu.com c.baidu.coma.baidu.com 作为验证用户登录账户。b和c作为客...
  • 简单说一下我逻辑,我也不知道我理解sso不对。 假如三个站点 a.baidu.com b.baidu.com c.baidu.com a.baidu.com 作为验证用户登录账户。 b和c作为客户端(子系统)。 b和c需要登录时候跳转到a,并且携带参数...
  • 学习笔记,使用xdebug跑了几遍代码,加深IOC容器的理解。 <?php //解读深入理解控制反转和依赖注入 原文链接 https://xueyuanjun.com/post/769 // DI 依赖注入 只要不是由内部生产(比如初始化、构造函数 __...
  • 前言: 第一次写技术类博客,因为比较懒,至于作为一个懒人为何会写博客,因为记性比较差,常常当初灵光一闪理解...为什么写laravel呢,这框架真心牛逼,组件化优势不提,我主要是用它来学习下PHP设计模式应用。
  • 什么是容器呢,它提供了整个框架运行过程中所需要一系列服务,其实通俗点讲,就是装东西盒子,框架中常见类,对象,配置等都装在这个盒子里,在程序运行过程中,动态为系统提供所需要服务,这就是容器...
  • 作者:不洗碗工作室 - Hanxiao版权归作者所有,转载请注明出处为什么要使用blade模板容易理解,思路清晰方便,直接可以在框架里使用,可以直观观察到自己写代码样子后台数据处理方便,blade模板和框架之间...
  • 声明:本文并非博主原创,而是来自Laravel 4 From Apprentice to Artisan》阅读翻译和理解,当然也不是原汁原味翻译,能保证90%原汁性,另外因为是理解翻译,肯定会有错误地方,欢迎指正。欢迎转载,...
  • 这一篇就先谈谈contracts的理解和用法。 Laravel 的 Contracts 是一组定义了框架核心服务的接口。说白了就是一组接口。使用它就是为了降低耦合性。 即便如此,是不是也有同学会搞不清楚Contracts在lavarel体系中...
  • PAGE / NUMPAGES 51cto学院-Laravel最好用PHP框架第三季 课程目标 熟练安装和部署Laravel深入理解路由概念OOP深入理解 适用人群 任何Web开发感兴趣小伙伴 课程简介 Laravel精讲从入门到精通 有史以来最...
  • PAGE / NUMPAGES 51cto学院-Laravel最好用PHP框架第一季 课程目标 熟练安装和部署Laravel深入理解路由概念OOP深入理解 适用人群 任何Web开发感兴趣小伙伴 课程简介 Laravel精讲从入门到精通 有史以来最...
  • 声明:本文并非博主原创,而是来自Laravel 4 From Apprentice to Artisan》阅读翻译和理解,当然也不是原汁原味翻译,能保证90%原汁性,另外因为是理解翻译,肯定会有错误地方,欢迎指正。 欢迎转载,...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
热门标签
关键字:

对laravel框架的理解