收藏本站

先锋论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1859|回复: 7

laravel PHP框架学习笔记

[复制链接]

该用户从未签到

发表于 2014-11-16 15:05:01 | 显示全部楼层 |阅读模式
本帖最后由 zhangjianqiu 于 2014-11-16 15:06 编辑

虽说在先锋呆了快2年了 = =不过 我还从来没正经的发过帖子 这一次就把自己的laravelPHP框架学习笔记发到这里吧  有感兴趣的可以来看看 给我回复回复让我也赚点积分神马的

下面就是正文了 不说废话

本人所用教程为Getting Started with Laravel 4 貌似没有中文版Orz  另外此文章在本人的blog同步更新

                听力猫猫巨巨的话,准备开始学PHP的框架 ,查了一下PHP框架的排名,准备学习Laravel框架 (* ^_^ *)   本人的系统是Ubuntu14.10  PHP已经安装了 Apache也安装了 如果上不去那个Laravel的话,怎么解决你们懂的...
安装和配置安装
  • 我们采用Composer+Laravel Installer 的方式进行安装  首先 安装 Composer,因为我的电脑里有curl了 ,所以用第一种方式下载Composer即可 如下curl -sS https://getcomposer.org/installer | php没有curl的话 就要用下面的代码下载
    php -r "readfile('https://getcomposer.org/installer');" | php
  • 安装好Composer后 运行如下这些指令 一条条来#下载Laravel Installer./composer.phar global require "laravel/installer=~1.1"#将Laravel Installer的运行路径写入环境变量 $PATH方便以后使用export PATH=$PATH:~/.composer/vendor/bin #在你想要安装laravel的目录下 运行安装指令laravel new YourProjectName
  • 这样就构建好了一个Laravel的PHP框架 在你当前的目录下的 YourProjectName文件夹下
  • WARNING: 如果遇到这个错误:                                  [GuzzleHttp\Exception\RequestException]
    Error creating resource. [url]http://cabinet.laravel.com/latest.zip [
    type] 2 [message] fopen(http://cabinet.laravel.com/latest.zip): failed
    to open stream: php_network_getaddresses: getaddrinfo failed: Name or
    service not known [file] /home/void-admin/.composer/vendor/guzzlehttp
    /guzzle/src/Adapter/StreamAdapter.php [line] 367          那是 因为 安装laravel时候需要去lookup的服务器找不到 这时就要翻墙了 不然 会没法新建这个框架
  • 配置文件 在 app/config/config.php 下 有明确的文档说明
  • 关于 URL Rewrite (Semantic URL)   这里应用官方的文档  因为我自己还不了解什么是URL Rewrite
Pretty URLs
ApacheThe framework ships with a public/.htaccess file that is used to allow URLs without index.php. If you use Apache to serve your Laravel application, be sure to enable the mod_rewrite module.
If the .htaccess file that ships with Laravel does not work with your Apache installation, try this one:
Options +FollowSymLinksRewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ index.php [L]



[发帖际遇]: zhangjianqiu 期末考试不复习,被老妈抓住 26 ¥ 金钱. 幸运榜 / 衰神榜
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-11-16 15:08:06 | 显示全部楼层
Laravel 学习笔记 #2 Ubuntu下 mcrypt 以及 Exception Handler 错误的解决

我们已经安装好了 Laravel  现在来做一些错误的调试和处理
第一个错误 是 mcrypt disabled 这个问题的解决 在 Ubuntu 14.10下 只要运行一个安装指令就可以
sudo apt-get install libmcrypt4 php5-mcrypt
如果上面的方法没有解决问题 那么再执行这个
sudo apt-get intsall mcryptsudo php5enmod mcrypt然后执行 grep指令查看是否已经加载了phpmod mcrypt

出现上面的信息 就对了



[发帖际遇]: zhangjianqiu 花费心思只为在先锋之夜露脸,论坛大神赏赐zhangjianqiu 31 ¥ 金钱. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-11-16 15:30:39 | 显示全部楼层
额,,,图片地址太长发不上来 = =
大家可以考虑到这里看 voidword.sinapp.com
[发帖际遇]: zhangjianqiu 为东大90周年校庆积极努力,zhangjianqiu 获得奖励 23 ¥ 金钱. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-11-16 15:32:42 | 显示全部楼层
然后 重启apache 就可以了

第二个错误是 “Error in exception handler”   这个问题解决起来比第一个麻烦一些 不过也没有太多的技术困难

首先 在 app/config/app.php下 打开 debug mode 这样可以看到详细信息 然后 发现是由于目录的读写权限问题 ,于是修改权限解决了问题



参考文字

But well, after running my first installation of this framework I obtained and error, which I explain in following lines:
Problem

I was getting this error:

Error in exception handler.

Error in exception handler .

Sometimes the error you are looking for is hidden behind the scenes, so you will need to drill down to figure out what is the actual problem, that is so important: remember the right way to solve something is, first of all, knowing what you are trying to solve…
Trying to find the “real” problem to give a solution

    Go to  app/config/app.php
    Modify line to enable debug mode:   ‘debug’ => true,
    In my case there was a problem with permissions to create log files ( laravel.log )

Error in exception handler: The stream or file "/Applications/XAMPP/xamppfiles/htdocs/projects/laravel/first/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/projects/laravel/first/bootstrap/compiled.php:8419

Error in exception handler : The stream or file "/Applications/XAMPP/xamppfiles/htdocs/projects/laravel/first/app/storage/logs/laravel.log" could not be opened : failed to open stream : Permission denied in / Applications / XAMPP / xamppfiles / htdocs / projects / laravel / first / bootstrap / compiled . php : 8419

After that, I received a new exception:

file_put_contents(/Applications/XAMPP/xamppfiles/htdocs/projects/laravel/first/app/storage/sessions/7b1ba46df9eaa9ca22a5c5cd1529956266a30c32): failed to open stream: Permission denied

file_put_contents ( / Applications / XAMPP / xamppfiles / htdocs / projects / laravel / first / app / storage / sessions / 7b1ba46df9eaa9ca22a5c5cd1529956266a30c32 ) : failed to open stream : Permission denied

This is clearly an error with permissions to write inside of app/storage/sessions , so a simple  chmod command solved that.

You can find more information about Laravel error and logs in this link: http://laravel.com/docs/errors

And that’s it!

Be happy with your code!



重装 PHP之后 连命令行的问题都解决了 就是之前总是告诉我 class PDO not defined 这个问题 (其实就是为了解决它才导致我的电脑昨天崩溃TPT ) 现在已经可以运行 php artisan serve 了Hooray
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-11-16 15:34:50 | 显示全部楼层
前两篇文章我们已经设置好了PHP的环境 和 laravel搭建的必备环境,下面就正式进入laravelPHP的学习了~~ 首先是我们的第一个laravel工程
Cat Application

截图如下

上面是效果图,下面就开始coding~
建立 laravel工程

首先 我们用laravel installer 建立一个laravel工程 ,注意此过程由于需要联网下载相关代码文件,需要科学上网 不然可能会导致建立失败。

输入如下指令 建立工程

laravel install cat

工程建立好之后 切换到工程的目录下, 然后运行这个指令

php artisan serve

在经过了前两篇文章的配置后,你应该能正常运行这个指令了 ,如果不能运行 出现报错信息,参见我上面几个教程 ,修复你的PHP环境

刚刚的指令给我们提供了一个不用开apache Or Nigix服务器程序就可以运行PHP网页的能力,在浏览器里输入 localhost:8000就可以打开了 最初的页面是一个laravel的logo 和 一句话 You have arrived 看到这样的页面说明你的laravel工程建立好了 下面就是代码的编写
第一个Helloworld 工程

Laravel采用的coding方式 也是 MVC的方式 即 Model View Controller 首先 我们从路由开始研究 ,这里路由最初我也不理解是什么意思 不过现在就当作是用户访问相应网址的时候会触发的响应即可 ,我们先写一个最简单的 访问根目录就会输出一个字符串的代码

打开 route.php j将原来的代码全部注释掉 然后添加如下的代码  这段代码的意思十分的简单 就不做解释了 这个理解了就可以继续往下看了

Route::get('/', function()
{
        return "hello";
});

首先看一下代码的格式 理解这个代码应该没有困难 ,主要是把这个格式记住即可

下面 看一个动态应用的实例 要求显示 用户访问该网站根目录下的 /cat/$ID

会输出 Cat $ID 其中 $ID为动态变化的值 下面是代码:

Route::get('cats/{id}',function($id){
        return "Cat #$id";
});

对这个代码做一个简单的解释 ,其实现在我自己也不能完全理解 因为我是小 白TAT

首先还是路由的代码的格式  cats/{id} 这个地方的意思就是 : 当用户访问  /cats/XX时候 触发下面的代码操作 function($id) 这个就是把 id这个参数传给该函数 ,然后 ,在下面写的这一句代码就很好理解了 这时,我们就可以去浏览器测试了  输入 localhost:8000/cats/VOID 你就会看到  浏览器输出了  Cat #VOID 这样的字样 这样我们的另一路由规则就写好了 ,等到后期我们可以在这里更改这个路由规则 让它能实现更高级的功能
略高级的路由功能

下面 我们修改一下上面的cats那个路由规则 仅当网址为 cats/1234 这样 id为纯数字字符组成的字符串 才能够激活这个路由规则 于是乎 我们修改代码为如下形式

Route::get('cats/{id}',function($id){
        return "Cat #$id";
})->where('id','[0-9]+')

懂正则表达式的童鞋们 ,应该不用我解释了 这里和上面唯一不同的地方就在这里

->where('id','[0-9]+')

这一句的意思 就是 id的值仅能为 数字组成的字符串 长度不限至少为 1

下面我们来加一个 重定向 代码如下 同样不做解释

Route::get('/',function(){
        return Redirect::to('cats');
});

这个代码作用就是 当用户访问根目录时 把用户重定向到 /cats/下

然后再为 /cats添加一个路由 代码如下

Route::get('cats',function(){
        return "All cats";
});

View 的简单应用



[发帖际遇]: zhangjianqiu 花费心思只为在先锋之夜露脸,论坛大神赏赐zhangjianqiu 41 ¥ 金钱. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2014-11-16 15:37:19 | 显示全部楼层
由于WordPress的 base64处理图片存储地址 = =导致图片的url都过长,,先锋论坛限制的最大字数都没有办法让我传一张图啊摔! 大家想看图片就到我的blog去看吧 = =不过我估计不会有多少人对这种文章感兴趣的  hiahiahia
BLOG 地址
voidword.sinaapp.com
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-12 13:46
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-8-26 09:44:55 | 显示全部楼层
    果然没人2333
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-9-25 00:42
  • 签到天数: 23 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2016-8-26 12:42:02 | 显示全部楼层
    我来帮忙盖楼,哈哈
    [发帖际遇]: 晓箫 网吧LOL五人黑,坑死队友,被罚 8 ¥ 金钱. 幸运榜 / 衰神榜
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|Archiver|手机版|先锋论坛 ( ICP05001332 )  

    GMT+8, 2018-9-23 06:25 , Processed in 0.174459 second(s), 28 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表