将自己的库放到Packagist,方便Composer

Composer大家知道是个好东西,类似Java的Maven,方便引入别人的代码,这里不再详细说明,快速上手发布,一次发布到处开发,极简步骤,保证上手 前置开发条件 MacOS High Sierra 10.13.3 Composer version 1.6.5 2018-05-04 11:44:59 一、首先开发自己的compose组件 要点:理解composer如何实现自动加载第三方组件; 理解psr-0和psr-4的规范; 理解基于psr-0,psr-4,classmap,files如何实现自动加载。 理解Composer和Packagist 创建目录 mkdir demo cd demo demo文件夹就是包的所在根目录,composer.json也在相应的根目录中,记住这个点就行,然后我们开始初始化这个包 composer init 之后会出现相应的信息 Welcome to the…

过度设计缓存的隐患

为什么要使用缓存?每当数据库的读取达到瓶颈,使用缓存是我们通常第一想法,缓存可以有效提高数据在高并发量下数据处理的能力。缓存这招大杀招虽然非常有效,但使用不好非常容易造成很多坑,反过来成为系统不稳定的根源,正常的数据库操作即使效率不高,但逻辑相对比较清晰,善用事务抛出问题也可以很快定位问题所在。也正因为如此,缓存更不应该被滥用,相反,我们应该在引进缓存之前,需要思考业务设计和系统本身的问题,先从业务上优化开始,思考系统设计的瓶颈,再在实际开发中遇到性能问题时适度使用缓存缓解。 下面分享一下使用缓存的习惯。 一、我们要解决什么问题 当访问数据的时候速度非常缓慢,需要解决这个瓶颈,更快返回数据。 二、解决方案的选择 数据库访问瓶颈我们第一时间想到一般是缓存,但不是所有数据都应该缓存,如缓存五分钟法则所讲:如果一个数据频繁被访问,那么就应该放内存中。缓存就是一种读写效率都非常高的存储方案,能够应对高并发的访问请求,通常情况下也不需要持久化的保证。但相对其他存储来说,缓存一般是基于内存的,成本比较昂贵,因此不能滥用。 缓存可以分为:本地缓存和分布式缓存。 1、本地缓存:主要指的是内存中的缓存机制。在PHP中,一般框架都会自己的缓存,Yii和Laravel都有一个类似的Cache的服务在其中,只需要在环境中配置就可以使用,在Java中,Google Guava中就提供了本地缓存的实现机制。…

Laravel 开发 API

以前API开发只局限为App提供数据接口,现在随着前端的发展,API已经成为一种通用的开发方法,进而诞生RESTful API,API输出规范的一种,也是最多人接受。根据我以前的经验,我们使用Laravel开发一套RESTful API,当然也有其他框架可以实现,但我比较熟悉的是这个框架,Lumen也会尝试,使用Laravel实在有点重,但胜在功能完备。 一、开发环境 依然是HomeStead,如果你看过前面的教程,相信已经非常熟悉了,我就在这里不说了,创建api数据库,配置好.env环境。 二、填充数据 比如说我想为一个课程提供API数据没,那么 先创建一张要migrate的表 php artisan make:migration create_lessons_table --create=lessons 之后创建Lesson Model php artisan make:model Lesson 接着创建LessonController php artisan make:controller…

刀耕火种式的PHP开发(二) -- 曾经流行一段时间的商城开发

这系列默认已经有一定的基础,所以会加快速度,不像Laravel那样手把手写教程,有一些地方需要你去思考,套路基本是这样,记得把握MVC的精髓。大大小小的手动框架,基本是这个模式,所以还是极力推荐大家使用Laravel开发,维护和开发都很舒服。 5、后台登录 既然是后台开发,那么帐号密码体系也少不了,里面的帐号密码都在sql文件中,大家可以自己看看。我在这里说一下简单的思路 首先少不了LoginController.php,在里面控制登录的处理,记得前端文件中,表单提交中需要更换。接着你要开启session,再Framework.php中开启 session_start() 不然使用$_SESSION是无法获取到数据。之后logout的部分也需要编写逻辑。这就使用session销毁 public function logoutAction() { unset($_SESSION['admin']); session_destroy(); $this->jump("index.php?p=admin&c=login&…

刀耕火种式的PHP开发(一) -- 曾经流行一段时间的商城开发

Laravel为代表的PHP框架代表了现代PHP开发模式,trait、namespace、composer等等各种特性大大方便了我们开发和维护的压力。但我接触得大多项目,都是自己编写一套PHP框架,一般来说,自制的框架或多或少有问题,而且没有文档可以查询,坑不是一般的少。所以,没事就不要自己创造框架,能力达不到容易留坑。但现在我们也要做一个框架,不用composer,自己手动创建,拿去对付一些压力不大的项目,其实是没问题的。现在这次我们做一下教程,一般来说,很多框架都遵从类似的结构,只要找到MVC点,很容易从整体上理解整体运行。这个是从我以前的工作遇到的项目中模仿出来的,参考带我的人的做法,但我不喜欢这种开发。 大家遇到什么问题,应该马上查看Github上的源码 一、MVC结构体系 首先当然是做好目录结构先 shop |--application | |--config | |--controllers | |--models | |--views |--framework | |--core | |--database | |--helpers | |--libraries |--public | |--css | |--images | |--js | |--uploads index.php shopcy.…

感受Laravel(六)-- 手把手教你Web开发

(4)具体文章的CURD 接着上面的,我们现在已经有了ArticleController,那么下一步当然是创建Model了。运行如下命令: php artisan make:model Http/Model/Article 同样在Article中编写如下逻辑 class Article extends Model { // protected $table = 'article'; protected $primaryKey = 'article_id'; public $timestamps = false; protected $guarded = []; } 接着就是修改ArticleController中的资源方法了,和CategoryController中同样的手法 public function store() { $input = Input::except('_token'); $input['article_time'] = time(); $rules = [ 'article_title' => 'required', 'article_…

感受Laravel(五)-- 手把手教你Web开发

1、后台页面 现在我们要进去后台,在Admin生成新的LoginController控制器, php artisan make:controller Admin/IndexController 当然添加index()方法 public function index() { return view('admin/index'); } 前端素材可以在我的github上获取,省时间,前端以后会讲解但现在主要是讲Laravel框架,专注于PHP先。 后台界面是同一套的界面,那么我们可以使用Blade视图继承来完成一些重复的界面设置。 在resources\views中创建新的文件夹,layouts,生成新的文件admin.blade.php,Blade视图文件的知识就不在这里说了,可以到官网去看,比较容易懂的,编码如下: <!DOCTYPE html> <html lang="en"> <head> <…

感受Laravel(四)-- 手把手教你Web开发

使用HomeStead,Mac开发环境,IDE为PhpStorm 1、基本环境设置 首先是在Homestead映射的地方上创建一个工程,推荐composer创建 composer create-project laravel/laravel --prefer-dist Blog 之后就是配置Homestead.yaml文件了,在 Homestead 目录中运行 bash init.sh命令来创建 Homestead.yaml 配置文件。Homestead.yaml 文件将会被放置在你的~/.homestead 目录中我稍微改了一下 配置更改之后,需要执行vagrant reload --provision命令更新Nginx的配置到虚拟机上,然后再vagrant up你会看到熟悉的界面。 之后就是数据库的一些基本设置了 .env文件的数据库链接加上DB_PREFIX数据库链接前缀 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306…

感受Laravel (三) -- Laravel 5.2 的优雅使用

7.路由系统 路由系统是所有 PHP 框架的核心,路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,任何一个Web服务都需要Http和路由组成,而一个请求经过Http和路由的完整过程是如下图: (图有疏漏,Controller和Model是可以交互的,Route可以直到View) 让我们先从Laravel的route.php文件开始认识,路径是laravel/app/Http/routes.php,打开看是这样的 Route::get('/', function () { return view('welcome'); }); Route::auth(); 当一个用户请求数据时,首先经过Route,Route承载URL到实际代码的作用,Route将请求定向到特定的位置,可以到达Controler或者直接到View层。因为这样的特性,基础路由就有两种方式 (1)闭包路由 比如这种 Route::get('/', function () { return view(…

感受Laravel(二) -- Laravel 5.2的优雅使用

4、数据库迁移(migration) 上次说到链接数据库,只是用图形界面去链接,那如果我想通过命令行的方式呢?也是很简单,在Homestead的目录中运行命令: vagrant ssh 这个命令链接虚拟机,然后就可以登进Ubuntu系统,链接数据库就是按照Linux上的操作mysql -u homestead -p就可以了。MySQL的帐号和密码是homestead/secret 首先创建数据库laravel5,要存储数据那么要创建表,这时我们可以使用Laravel的新特性,使用数据库迁移(migration) migration的作用是用PHP描述数据库构造,并且使用命令行一次性部署所有数据库结构。 运行命令: php artisan migrate 然后在database目录中成功创建了两个table 然后去laravel.app/home注册用户试试,一般会看到成功登录。 而这张表的结构如图所示: 没错,migration使用是将创建表填充数据结构,使用上面的命令之后,可以通过Sequel Pro查看: 表中自然创建了id、name、email、password、rememberToken、timestamps,非常方便。 5、Eloquent…