精华内容
下载资源
问答
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • 同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率。说明:本文章主要讲述PHP的对象遍历(Iterator)知识点。由于Laravel框架中就在集合(Collection)中用到了对象遍历知识点,故记录并学习之。Laravel中...

    6714b9fbf6b9224502a218c1a495238e.gif

    b1ce1d314b5a2c7fee19ab809fb22343.png

    本文主要学习:Laravel框架之PHP对象遍历(Iterator),小编把自己的一点点经验分享出来希望对别人能有帮助。同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率。

    0b5bfd4576e4d2b116b6d659811f94a7.png

    说明:本文章主要讲述PHP的对象遍历(Iterator)知识点。由于Laravel框架中就在集合(Collection)中用到了对象遍历知识点,故记录并学习之。

    Laravel中在基础集合类

    Illuminate\Support\Collection、路由类中Illuminate\Routing\RouteCollection和分页类中Illuminate\Pagination\Paginator等,都用到了对象遍历这个小知识点,这些类都是实现了IteratorAggregate这个接口,这个接口定义getIterator(),返回的是迭代器对象。PHP标准扩展库中提供了很多默认迭代器实现类,比较常用的是数组迭代器对象ArrayIterator

    对象遍历(Iterator)基本遍历

    PHP5提供了遍历对象属性的方法,而且默认是可见属性,如代码中foreach遍历对象属性,默认的都是可见属性:

    <?php /** * Created by PhpStorm. * User: liuxiang * Date: 16/7/20 * Time: 17:29 */class TestIterator {    /**     * @var string     */    public $name    = 'PHP';    /**     * @var string     */    public $address = 'php.net';    /**     * @var string     */    protected $sex  = 'man';    /**     * @var int     */    private $age    = 20;}$testIterator = new TestIterator();foreach ($testIterator as $key => $value) {    echo $key.':'.$value.PHP_EOL;}输出的是:name:PHPaddress:php.net如果需要遍历对象的不可见属性,则在对象内部定义一个遍历方法:public function unAccessIterator()    {        echo 'Iterator the unaccess fields:'.PHP_EOL;        foreach ($this as $key => $value) {            echo $key.':'.$value.PHP_EOL;        }    }对象外部访问:$testIterator->unAccessIterator();将可以遍历对象的不可见属性,输出结果:Iterator the unaccess fields:name:PHPaddress:php.netsex:manage:20Iterator接口

    PHP提供了Iterator接口,用来定义迭代器对象来自定义遍历,所以利用Iterator接口来构造迭代器,需要实现Iterator定义的几个方法:

    /**

     * Created by PhpStorm.

     * User: liuxiang

     * Date: 16/7/20

     * Time: 17:29

     */

    class TestIterator implements Iterator{

        /**

         * @var string

         */

        public $name    = 'PHP';

        /**

         * @var string

         */

        public $address = 'php.net';

        /**

         * @var string

         */

        protected $sex  = 'man';

        /**

         * @var int

         */

        private $age    = 20;

        /**

         * @var array

         */

        private $composerPackage;

        public function __construct($composerPackage = [])

        {

            $this->composerPackage = $composerPackage;

        }

        public function unAccessIterator()

        {

            echo 'Iterator the unaccess fields:'.PHP_EOL;

            foreach ($this as $key => $value) {

                echo $key.':'.$value.PHP_EOL;

            }

        }

        /**

         * Return the current element

         * @link http://php.net/manual/en/iterator.current.php

         * @return mixed Can return any type.

         * @since 5.0.0

         */

        public function current()

        {

            // TODO: Implement current() method.

            echo 'Return the current element:'.PHP_EOL;

            return current($this->composerPackage);

        }

        /**

         * Move forward to next element

         * @link http://php.net/manual/en/iterator.next.php

         * @return void Any returned value is ignored.

         * @since 5.0.0

         */

        public function next()

        {

            // TODO: Implement next() method.

            echo 'Move forward to next element:'.PHP_EOL;

            return next($this->composerPackage);

        }

        /**

         * Return the key of the current element

         * @link http://php.net/manual/en/iterator.key.php

         * @return mixed scalar on success, or null on failure.

         * @since 5.0.0

         */

        public function key()

        {

            // TODO: Implement key() method.

            echo 'Return the key of the current element:'.PHP_EOL;

            return key($this->composerPackage);

        }

        /**

         * Checks if current position is valid

         * @link http://php.net/manual/en/iterator.valid.php

         * @return boolean The return value will be casted to boolean and then evaluated.

         * Returns true on success or false on failure.

         * @since 5.0.0

         */

        public function valid()

        {

            // TODO: Implement valid() method.

            echo 'Checks if current position is valid:'.PHP_EOL;

            return current($this->composerPackage) !== false;

        }

        /**

         * Rewind the Iterator to the first element

         * @link http://php.net/manual/en/iterator.rewind.php

         * @return void Any returned value is ignored.

         * @since 5.0.0

         */

        public function rewind()

        {

            // TODO: Implement rewind() method.

            echo 'Rewind the Iterator to the first element:'.PHP_EOL;

            reset($this->composerPackage);

        }

    }

    /*

    $testIterator = new TestIterator();

    foreach ($testIterator as $key => $value) {

        echo $key.':'.$value.PHP_EOL;

    }

    $testIterator->unAccessIterator();*/

    $testIterator = new TestIterator([

        'symfony/http-foundation',

        'symfony/http-kernel',

        'guzzle/guzzle',

        'monolog/monolog'

    ]);

    foreach ($testIterator as $key => $value) {

        echo $key.':'.$value.PHP_EOL;

    }

    成员变量$composerPackage是不可见的,通过实现Iterator接口,同样可以遍历自定义的可不见属性,输出结果如下:

    Rewind the Iterator to the first element:

    Checks if current position is valid:

    Return the current element:

    Return the key of the current element:

    0:symfony/http-foundation

    Move forward to next element:

    Checks if current position is valid:

    Return the current element:

    Return the key of the current element:

    1:symfony/http-kernel

    Move forward to next element:

    Checks if current position is valid:

    Return the current element:

    Return the key of the current element:

    2:guzzle/guzzle

    Move forward to next element:

    Checks if current position is valid:

    Return the current element:

    Return the key of the current element:

    3:monolog/monolog

    Move forward to next element:

    Checks if current position is valid:

    ed7782cf71059319c2d316efb6a3dc6b.pngIteratorAggregate接口

    PHP真心为程序员考虑了很多,实现IteratorAggragate接口后只需实现getIterator()方法直接返回迭代器对象,就不需要实现Iterator接口需要的一些方法来创建一些迭代器对象,因为PHP已经提供了很多迭代器对象如ArrayIterator对象。所以再重构下上面代码:

    class TestCollection implements IteratorAggregate{

        ...

        /**

         * @var array

         */

        private $composerPackage;

        ...

        /**

         * Retrieve an external iterator

         * @link http://php.net/manual/en/iteratoraggregate.getiterator.php

         * @return Traversable An instance of an object implementing Iterator or

         * Traversable

         * @since 5.0.0

         */

        public function getIterator()

        {

            // TODO: Implement getIterator() method.

            return new ArrayIterator($this->composerPackage);

        }

    }

    $testCollection = new TestCollection([

        'symfony/http-foundation',

        'symfony/http-kernel',

        'guzzle/guzzle',

        'monolog/monolog'

    ]);

    foreach ($testCollection as $key => $value) {

        echo $key.':'.$value.PHP_EOL;

    }

    同样的,能遍历$testCollection对象的不可见属性$composerPackage,输出结果:

    0:symfony/http-foundation

    1:symfony/http-kernel

    2:guzzle/guzzle

    3:monolog/monolog

    文章开头聊到Laravel中就用到了IteratorAggragate这个接口,可以看看文件的源码。

    总结 PHP提供的对象遍历特性功能还是很有用处的。多多使用Laravel,研究Laravel源码并模仿之,也不错哦。

    1

    1

    end

    PHP网站开发教程,

    php学习大本营的集合地。

    早关注,早学习,早提升!

    c9d79cfc725c7c21e76b5c2bf01e83ce.png3485a681c26add7596f2802657c5ccf8.png

    学习的路上,我们在等你

    长按扫码可关注

    展开全文
  • # 网站开发完成,要部署到apache服务器上时,只能显示/public下的主页,访问其他页面则404 造成这个问题的原因主要有两点: 1. apache没有开启对.htaccess的重写权限 2. apache配置虚拟主机时,少配置了一层。...

    # 网站开发完成,要部署到apache服务器上时,只能显示/public下的主页,访问其他页面则404

    造成这个问题的原因主要有两点:
    1. apache没有开启对.htaccess的重写权限
    2. apache配置虚拟主机时,少配置了一层。应该是 /www/myapp/public 而不是 /www/myapp

    具体到我这儿的这个问题,是由这两点原因共同造成的。可是由于大多数人的问题是由第1个原因造成的,导致我搜索了很多文章,也完全做好了原因1的配置,可是还是不能成功运行。还好#StackOverflow的这个问题Alexey Mezenin这个老哥的回答中指出:要具体到public目录,才最终解决了问题。

    • 解决问题1
      到apache的httpd.conf文件中,找到
    #LoadModule rewrite_module modules/mod_rewrite.so

    这一行,把注释去掉。再从你对应的目录设置里,把

    AllowOverride None

    改成

    AllowOverride All

    重启apache,就好了。

    • 解决问题2
      到相应的目录设置处,或虚拟主机设置处,把 public 目录加上就好了。

    # Auth::attemp()验证登录,总是失败

    造成这个问题的原因是,我手贱自己用md5把密码加密后存库了。登录验证时又把request里的密码加了md5去和数据库对比。

    实际上,这个方法会对前台来的明文密码直接加密,所以如果再对request里的密码用md5相当于加密了两次当然不对了。
    然后测试用建立数据库用户记录的时候,通过tinker,调用Hash::make()方法,就可以用和这个方法一致的加密方式进行加密了。

    展开全文
  • Laravel框架致力于让PHP的开发过程更加轻松愉快,Homestead是Laravel官方推荐的虚拟开发环境,Homestead可以运行在Windows、Mac或Linux系统上,并且包含了Nginx服务器、PHP、MySQL、Postgres、Redis、Memcached、...
    Laravel框架虚拟开发环境Homestead视频教程—142人已学习 
    课程介绍    
    201802071450349034.png
        Laravel框架致力于让PHP的开发过程更加轻松愉快,Homestead是Laravel官方推荐的虚拟开发环境,Homestead可以运行在Windows、Mac或Linux系统上,并且包含了Nginx服务器、PHP、MySQL、Postgres、Redis、Memcached、Node等开发程序。
    课程收益
        让PHP的开发过程更加轻松愉快。
    讲师介绍
        陈华更多讲师课程
        7年开发经验,Web全栈工程师,前端、PHP、Python讲师
    课程大纲
      第1章:Homestead 下载与安装
        1.Laravel开发环境之Homestead简介  7:31
        2.Laravel开发环境之Homestead相关软件安装  14:05
        3.Laravel开发环境之vagrant添加Homestead  10:39
      第2章:Homestead 常见问题
        1.Laravel开发环境之Homestead版本号问题  7:30
        2.Laravel开发环境之Homestead添加虚拟机  16:17
        3.Windows系统安装Homestead硬件虚拟化问题  6:40
    大家可以点击【查看详情】查看我的课程
    展开全文
  • 本文实例讲述了Laravel框架分页实现方法。分享给大家供大家参考,具体如下: Laravel使用的过程中,有些功能把前端页面的表达“写死了”,比如分页的翻页按钮! 当然你会说Laravel的Bootstrap样式也很好看啊,但是...
  • 本篇文章主要讲述了新手学习laravel的过程中必须要了解的事项,具有一定的参考价值准备学习laravel框架的朋友一定不能错过哦,希望看完能对你有所帮助。一、Laravel环境搭建1、window环境下环境搭建请参考以下链接:...

    本篇文章主要讲述了新手学习laravel的过程中必须要了解的事项,具有一定的参考价值准备学习laravel框架的朋友一定不能错过哦,希望看完能对你有所帮助。

    一、Laravel环境搭建

    1、window环境下环境搭建请参考以下链接:

    开发环境搭建 - Windows | 《Laravel 开发环境部署》 | PHP / Laravel 社区文档

    https://laravel-china.org/docs/laravel-development-environment/5.5/development-environment-windows/938

    二、需要注意问题

    以下皆为按默认搭建环境下的操作

    1、下载下来的Laravel项目,登录数据库homestead / secret

    2、通过vagrant驱动虚拟机cd ~/Homestead && vagrant up

    3、Bash 登录虚拟机vagrant ssh

    4、VirtualBox 登录虚拟机默认账号密码:vagrant / vagrant

    5、Nginx配置文件所在目录vim /etc/nginx/nginx.confcd /etc/nginx/sites-available (所有站点配置文件)

    6、Laravel内置命令行使用

    通过命令行指令切换到Laravel项目的根目录下,命令形式为:php artisan (+具体命令)

    例如:

    (1)、清除视图缓存php artisan view:clear

    (2)、清除运行缓存php artisan cache:clear

    (3)、清除配置缓存php artisan config:clear

    7、配置多站点

    通过homestead.yaml配置多站点,需要执行:vagrant provision

    此操作会重构数据库,并不推荐。可用以下命令来代替,该命令可应用性的更改。vagrant reload --provision

    展开全文
  • 作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正...   1.渲染模版方式的不同:在Laravel框架里,使用return ...
  • 同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率。下面和小编一起学习吧!1. 使用dd()函数,将感兴趣的数据输出到浏览器上,快速查看变量的内容$items = array( 'items' => ['Pack luggage', 'Go ...
  • Laravel被称为“全栈”式框架,因为它...Laravel附带了一个名为Artisan的优秀的命令行工具,它提供了一些开发过程中有用的命令用,可以用来生成框架代码和数据库管理。它是基于强大的Symfony Console 组件开发的。...
  • Laravel被称为“全栈”式框架,因为它...Laravel附带了一个名为Artisan的优秀的命令行工具,它提供了一些开发过程中有用的命令用,可以用来生成框架代码和数据库管理。它是基于强大的Symfony Console 组件开发的。...
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • Laravel框架分析

    千次阅读 2016-09-01 16:45:19
    Laravel被称为“全栈”式框架,因为它能够处理从...Laravel附带了一个名为Artisan的优秀的命令行工具,它提供了一些开发过程中有用的命令用,可以用来生成框架代码和数据库管理。它是基于强大的Symfony Console 组件开发
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • 本文实例讲述了Laravel框架源码解析之模型Model原理与用法。分享给大家供大家参考,具体如下: 前言 提前预祝猿人们国庆快乐,吃好、喝好、玩好,我会在电视上看着你们。 根据单一责任开发原则来讲,在laravel的开发...
  • laravel框架基础知识

    2019-10-03 07:28:14
    以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 二、版本选择 本篇学习笔记以laravel5.2.15版本为框架的版本基础;更多版本请移步https://www.golaravel.com/ 三、laravel...
  • 本篇文章给大家带来的内容是关于Laravel框架下的配置管理系统的设计过程(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。项目背景硬件架构采用Nginx + SLB,应用程式使用 Laravel 的 .env...
  • Laravel框架实现的记录SQL日志功能示例本文实例讲述了Laravel框架实现的记录SQL日志功能。分享给大家供大家参考,具体如下:在项目开发过程中或者是性能优化中,经常会有要查看执行sql的情况,然而Laravel日志默认不...
  • Laravel框架详解 CURD

    千次阅读 2016-12-06 16:32:03
    Laravel 框架学习笔记 一 composer 使用 1. composer 安装 说明:composer 是使用php语言开发的工具。安装composer需要php的开发环境。这里我们使用phpstudy的php集成环境 过程:1. 登录composer官网 ...
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • 0. laravel框架中 服务容器是整个系统功能调度配置的核心,在系统运行过程中动态的为系统提供需要的服务 从而实现了解耦 0. 服务提供者是所有 Laravel 应用程序引导启动的中心, Laravel 的核心服务器、注册服务容器...
  • 各种bug,各种不兼容,这里就对laravel框架开发过程做一下简单的总结吧。  遇到的第一个困难就是laravel环境的配置问题。据说很多人都是被挡在了这里,就放弃了学习。网上很多博客都对larave...
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • 本文实例讲述了Laravel框架实现的记录SQL日志功能。分享给大家供大家参考,具体如下: 在项目开发过程中或者是性能优化中,经常会有要查看执行sql的情况,然而Laravel日志默认不记录执行sql。好在留有相关接口,我们...
  • 本文实例讲述了Laravel框架实现的记录SQL日志功能。分享给大家供大家参考,具体如下:在项目开发过程中或者是性能优化中,经常会有要查看执行sql的情况,然而Laravel日志默认不记录执行sql。好在留有相关接口,我们...
  • 近日开发中要在laravel框架中集成富文本编辑器,方便运营同事使用。原来使用TP框架的思路就是把JS文件整合到框架中,然后前端注入,后端交互。在laravel中的思路也应该差不多。下面将laravel集成Ueditor的方法和心得...
  • 说明 很久以前在一个话题里面聊到的观点,很多同学... 长期支持 (LTS)是一种软件的产品生命周期政策,特别是开源软件,它增加了软件开发过程及软件版本周期的可靠度。长期支持延长了软件维护的周期;它也改变了...
  • 以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 二、版本选择 本篇学习笔记以laravel5.2.15版本为框架的版本基础;更多版本请移步https://www.golaravel.com/ 三、laravel...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,270
精华内容 1,308
关键字:

laravel框架开发过程