新蒲京200.c软件下载-app官网网址 > 文章 >

付费投稿布置

本文由码农网 – 邱康原创,转发请看清文末的转发供给,款待参与大家的付费投稿布署!

明天再给二个APP写API,同期还要写相应的后台管理网址。为了便利开拓和代码组织与治本,作者主宰动用多少个现成的框架。Codeigniter由于其轻量轻便自定制的风味吸引了作者,一路支付过来也许有差不离年时间了,写下有个别和煦在付出进度中的一些回味来与大家共勉。

开拓工具

开采工具有那多少个,每一种人的习于旧贯也比不上。Eclipse一贯是本人的最爱,那么怎么让Eclipse支持codeigniter呢?

率先那是个PHP项目,所以得让Eclipse辅助PHP。假如你的微机已经设置了PHP,那么最简单易行的做法就是在Eclipse的market space中追寻PDT并安装。具体操作:Help -> Eclipse 马克etplace。在输入框中输入PDT,点击find,如图:

图片 1

点击右下方的install,等待几分钟即可。

现行反革命能够在Eclipse中写PHP了,不过对此codeigniter来讲,常常应用的言语近似如下:

$this->load->model ( 'user_model' );

$this->input->post ('phone');

历次都要手动输入这么长的切近的话语对于追求快速的人来讲断定是不可取的,所以得让Eclipse支持codeigniter特定的代码提醒,包含Controller和Model。把之类代码加多到

system/core/ 目录下的Controller文件中CI_Controller类的布局函数在此以前,这件事实上正是扩充

变量注脚,Model文件也是一模一样操作。

 /**
       * @var CI_Config
       */

       var $config;

       /**
       * @var CI_DB_active_record
       */

       var $db;

       /**
       * @var CI_Email
       */

       var $email;

       /**
       * @var CI_Form_validation
       */

       var $form_validation;

       /**
       * @var CI_Input
       */

       var $input;

       /**
       * @var CI_Loader
       */

       var $load;

       /**
       * @var CI_Router
       */

       var $router;

       /**
       * @var CI_Session
       */

       var $session;

       /**
       * @var CI_Table
       */

       var $table;

       /**
       * @var CI_Unit_test
       */

       var $unit;

       /**
       * @var CI_URI
       */

       var $uri;

       /**
       * @var CI_Pagination
       */

       var $pagination;

以往成效如下:

图片 2

只需输入$this 就能够发生代码提示,效能提高不菲。

自定义辅助函数和库

貌似三个品类中会有无数相通的逻辑,会使用到均等的代码。假如老是都去复制粘贴不止麻烦并且不便利后续改正,想到须求改过三个逻辑就要到各样文件里改革代码就以为怕人(涉及到设计情势这一块了,值得大家学习)。所以你要善用运用这一个自定义帮衬函数(helpers)和自定义的库(libraries)。把相符的逻辑封装成函数大概类,每一次遭受相近的逻辑之时只需调用现存的helper只怕library就可以,修改也只供给在helper可能library中一处改换,无需随处找代码。

举二个自家项目中的例子。API必要给APP发送的央求重返json格式数据,那么在PHP中的一种完结形式就是:

echo json_encode ( $data);//$data 是array类型的数据

可是倘若$data中满含中文字符的话,输出的json数据会把中文变成Unicode编码,为了制止顾客端必要重新拍卖多少,必要参预多个参数,即:

echo json_encode ( $data , JSON_UNESCAPED_UNICODE);//$data 是array类型的数据

如此那般就能够出口原始的国语了。可是难点又来了,每一遍都要写这么长一段代码实乃勤奋,所以封装成二个扶植函数。在application/helpers 文件夹中新建一个文书render_helper.php。当中代码如下:

<?php

defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );

/**

 * 打印不转义中文的json

 * @param [array] $data

 */

function echo_json($data) {

       echo json_encode ( $data, JSON_UNESCAPED_UNICODE );

}

那么每一次调用之时只需先在类中的布局函数载入该救助函数,如下:

$this->load->helper ( 'render' ); // 载入打印json的自定义辅助函数

就能够在本类的装有成员函数中选拔该方式:

echo_json ( $data);

如此省时省力(加上Eclipse的代码提醒,你只必要输入echo,这么些函数就能够出来了)。将来需求改正成编码后汉语,恐怕转变创建筑陶瓷宛共和国语等等(古怪的必要~)你都能够只修正一行代码,功能增高不少。

专长缓存

倘使一个APP的外向客商不是过多,那么人生观的LAMP构培育足以应付了。不过随着客户的逐月增加,要想加强并发量,最佳还是加多个缓存。在memcached和redis中,笔者接收了redis,重要因为它数据类型更增加(不独有扶助key-value型的多寡,同不常候还提供list,set,zset,hash等数据布局的蕴藏),能帮您兑现部分逻辑(防止双重造轮子)。与Eclipse配置同理,首先得让计算机上的PHP能够和redis通信(假若你的微机已经安装了redis),那么首选的是phpredis扩大,这里介绍一下自作者在Debain服务器上的布署进程,推行的吩咐如下:

wget https://github.com/nicolasff/phpredis/archive/master.tar.gz  #下载扩展

tar xvf master.tar.gz      #解压目录

cd phpredis-master/     #进入解压后的目录

phpize

./configure --enable-redis

make && make install    #安装

#但是报错-bash: phpize: command not found(在使用apt-get install php5安装php时,默

#认是没有安装phpize的,我们安装phpredis时,需要用到phpize,因此,需要先安装#phpize。我们通过安装php开发者工具来获取phpize。执行如下命令即可: apt-get install #php5-dev)

ls  /usr/lib/php5/20100525/#根据安装提示的文件,结果:curl.so  gd.so  redis.so

vim /etc/php5/apache2/php.ini   #打开PHP配置文件

# Dynamic Extensions 后面添加extension=redis.so,因为上面命令结果显示有redis.so

/etc/init.d/apache2 restart       #重启Apache服务器

今昔PHP就会和redis通信了,测量检验如下:

<?php

 $redis = new Redis();

 $redis->connect('127.0.0.1',6379);

 $redis->auth('你的密码');//为了安全,要给redis设置密码

 $redis->set('tom','hanks');

 echo ' tom:'.$redis->get('tom'). '</br>';// tom:hanks

echo 'will:'.$redis->get('will'); //will:

?>

好了,未来到来配置codeigniter使其能够选择redis的手续了。Codeigniter3.0.0本人有着redis扶持,可是它完成的作用过于单一,不可见满意自己的事体供给,所以一定要校勘。但是最为不要平昔在/system/libraries/Cache/drivers/Cache_redis.php 中期维校正,因为以往codeigniter进级采用直接覆盖system文件夹的花样,会覆盖掉你的代码。所以最明智的做法照旧要好创建叁个库,具体步骤如下:

1、在application/config/redis.php 中步入配置新闻:

<?php

defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );

$config ['socket_type'] = 'tcp';

config ['host'] = '你的服务器域名或者IP';

$config ['password'] = '你的redis密码';

$config ['port'] = 6379;

$config ['timeout'] = 0;

2、在application/libraries中创建如下图的文书布局

图片 3

Rediscli.php 代码如下:

<?php

defined ( 'BASEPATH' ) or exit ( 'No direct script access allowed' );

class Rediscli extends CI_Driver_Library {

       public $valid_drivers;

       public $CI;

       function __construct() {

              $this->CI = & get_instance ();

              $this->valid_drivers = array (

                            'default'

              );

       }

}

Rediscli_default.php 代码从/system/libraries/Cache/drivers/Cache_redis.php 直接拷贝过来,独一的两样是把类名从CI_Cache_redis改为Rediscli_default,那样就会依照法定的利用办法应用大家和好写的库。

3、现在得以在Rediscli_default.php中足够可能涂改章程,具体操作决计于你协和的利用的须求。比如在自个儿的选取中,供给保障贰个必定将长度的体系,所以在Rediscli_default类中增添如下三个格局:

/**

       * 弹出链表头元素

       * @param unknown $key,链表名              

       */

       public function lpop($key) {

              return $this->_redis->lPop ( $key );

       }

       /**

       * 插入元素到表尾

       * @param unknown $key,链表名              

       * @param unknown $value,待插入值              

       */

       public function rpush($key, $value) {

              return $this->_redis->rPush ( $key, $value );

       }

有个别类须要调用该库时只需在其构造函数中增多如下代码:

$this->load->driver ( 'rediscli' ); // 加载redis自定义库

$this->rediscli->default->is_supported ();//判断是否支持redis并打开连接

则该类的各种函数就都足以动用Rediscli_default类中的任一方法,示比如下:

$this->rediscli->default->lpop('delnews');//弹出名为delnews的链表头元素

$this->rediscli->default->rpush('delnews',$nid);//该链表加入尾元素$nid

登入逻辑的落实

对于大家的应用软件来讲,每一个诉求都要一口咬住不放客户是还是不是已登入,对于登入的官方客商符合规律呈现哀告,对于未登入的客商提醒“请首先登场陆”。通常的web应用使用cookie-session机制,经常的session都是以文件情势保留在服务器上,寻思到文件访谈慢于内存访问,大家能够配备codeigniter的session保存于redis中。笔者那边模仿这种体制:客户正常login后回来一个特定的id和一定的token(你能够自定义爆发算法),服务器以id为key、token为value直接保存在redis中。未来的历次访谈应用程式都必需带上用appsecret(预约义)加密后的参数id和token,服务器端校验成功即健康重临数据,不然提醒“请首先登场陆”。

那正是说是还是不是每种类都需求写一回检查登录的代码呢?当然不能够如此干,咱们得以自定义三个基类,在该基类的布局函数中检查登入状态(还足以在这里边加载常用的帮带函数和库,比方下边包车型地铁render_helper 和 rediscli)。然后其余的职业逻辑的类就接二连三该基类,并成功其本人逻辑就可以。

具体操作正是在 application/core 中新建文件 MY_Controller.php,该公文对应MY_Controller类(继承CI_Controller类)。该类只须要一个构造函数达成上述效率就可以。

下一场其它逻辑类只需继续MY_Controller类就不必再一次校验登入状态,而只需成功本身逻辑。

总结

Codeigniter是自己最赏识的一个PHP框架(比较于thinkPHP,Zend Framework等等),主要在于其易安装,轻量,易自定制的帮助和益处。把握好那么些亮点,大家就会写出不逊于那三个重量级框架写出来的使用,何况省时省力。

用作叁个学子,在物色学习的途中还应该有许多题目亟需减轻,本文的意在和大家饮鸩止渴,更关键的是贵裔有啥样建议如故商酌请一定多都赐教哈,笔者的天涯论坛:邱康singasong。

上一篇:付费投稿安顿
下一篇:没有了