给李书记点个赞吧
首页

Yii框架启动安装配置详解

 1:yii框架启动与安装:

1:requirements.php检测系统环境,看看环境是不是符合yii框架的标准。而检测的结果放在details里面。

2:运行yii框架需要访问yii框架中的另外一个文件web/index.php 但是打开时报错的因为下面的cookieValidationKey 没有进行配置。 index.php简称入口脚本。

3:cookieValidationKey 在config下web.php文件里面进行配置会提示:需要安装php里面的openssl支持。

1

  1:在window平台下解决办法:

1、在c:\windows\php.ini中

将;extension=php_openssl.dll前面分号(注释)去掉

2、复制php安装目录中的:

libeay32.dll

ssleay32.dll

至c:\windows\system32

3、复制PHP\ext目录中的php_openssl.dll至c:\windows\system32

最后:从启Apache

2:在Linux平台下安装openssl支持

1:安装openssl组件,一般php安装目录中都有许多扩展组件的安装包,当然也包括openssl,例如我的php安装目录是/data/php-5.4.32,那么openssl组件的安装目录则为/data/php-5.4.32/ext/openssl,然后执行以下操作

(1) cd /data/php-5.4.32/ext/openssl

(2) mv config0.m4 config.m4

(3) /data/php/bin/phpize

(4) ./configure –with-openssl –with-php-config=/data/php/bin/php-config,如果此步报Cannot find

1:OpenSSL’s 的错误执行以下命令:

yum install openssl openssl-devel

ln -s /usr/lib64/libssl.so /usr/lib/

然后重复(3)(4)步骤

(5)make

(6)make install,安装成功会生成一个目录里面包含openssl.so

修改php.ini文件,首先应设置一个扩展组件的存放目录,例如我的存放目录为/data/php/ext,那么修改php.ini中的extension_dir为extension_dir = “/data/php/ext”,然后在扩展组件最后添加extension=openssl.so,最后保存文件

 重启php和nginx

phpinfo查看openssl是否安装成功

2:请求处理流程

当浏览器访问web入口脚本(index.php)的时候浏览器会像入口脚本发送一个脚本请求那么入口脚本怎么来接受请求呢?

下面看下yii应用的静态结构:

3:命名空间

namespace a\b\c;

class Apple{

function get_info(){

echo “this is A”;

}

}

namespace d\e\f;

class Apple{

function get_info(){

echo “this is B”;

}

}

require_once(“a.php”);

require_once(“b.php”);

use a\b\c\Apple; //使用a.php下面的Apple()

use d\e\f\Apple as BApple;

$a_app = new Apple();

$b_app = new BApple();

$b_app -> get_info();

 yii控制器:

  如何创建控制器

Namespace app\controllesr; //命名空间地址

use yii\web\Controller; //controller需要使用哪个命名空间下面的类

class HelloController extends Controller{

//在控制器中如果有请求来到HelloController 在yii框架中专门处理请求的方法叫做操作,是共有的,而且是一个函数 另外操作的名字必须以action开头

我们可以通过上面的地址就可以访问我们的控制器内容了

http://localhost/basic/web/index.php?r=hello/index

}

2:那么怎么可以通过后面加地址将数据的值取出来?请求主键获取

我们需要一个请求主键的东西怎么获得请求主键我们需要一个全局的类{\YII},在全局类里面有一个全局静态{$app}变量:这样就可以获取请求发送过来的数据了。

$request = \YII::$app->request;

$request->get(id); 通过get获取请求的id

这样就可以获取他的id传过来的值了。

如果get得到的id没有正常的获取值,那么我们可以给get多加一个参数如:

$request -> get(‘id’,200); //这样就可以获取参数的值了。

当然我们也可以通过is Get和isPost来判断是通过什么请求。如:

if($request -> isPost){ //通过post去判断

echo “this is post method!”;

}

if($request -> isGet){ //通过get去判断

echo “this is get method!”;

}

//通过请求我们也可以获取用户的ip: echo $request -> userIp;

 响应主键的获取:

当浏览器发送请求之后,而我们对请求处理之后,服务器会将请求结果打包成一个消息,这个消息叫做响应。

在全局类之前一定要加上反斜杠\然后加上应用主体$app

首先需要一个全局的类\YII::$app -> response;【响应主键】

$res -> statusCode (这是状态码)= ‘404’;

$res = \YII::$app -> response;

//$res -> statusCode =”404″; //设置状态码

//$res -> headers -> add(‘pragma’,’no-cache’); 给头部添加无缓冲

//$res -> headers -> set(‘pargma’,’max-age=5′);给头部设置

//$res -> headers -> remove(‘pragma’);//移除pragma

//$res -> headers -> add(‘location’,’http://www.baidu.com’);//跳转地址

//$this -> redirect(‘http://www.baidu.com’,302);

 //文件下载

$res->headers->add(‘content-disposition’,’attachment;filename=”a.jpg”‘);

//$res->sendFile(‘./robots.txt’);

 控制器之session处理:

//session主键

$session = \YII::$app-> session;

//判断session是否开启

$session -> open();

/* if($session -> isActive){

echo “session is active”;

//判断session是否开启

} */

//$session ->set(‘user’,’张三’);//设置user信息

//echo $session -> get(‘user’);//取出user信息

//$session -> remove(user);//删除数据

//可以将session当成数组

//$session[‘user’]=’张三’;

//echo $session[‘user’];

//可以通过unset()进行销毁session

//unset($session[‘user’]);

//session原理

//$session[‘user’]=’张三’;

echo $session[‘user’];

  控制器之cookie处理:

//$cookies = \YII::$app -> response -> cookies;

//$cookid_data = array(‘name’=>’user’,’value’=>’lihaiyang’);

//$cookies -> add(new Cookie($cookid_data));

//$cookies -> remove(‘id’);

//怎么将请求的数据拿出来用,请求主键

$cookies = \YII::$app -> request -> cookies;//请求cookies

echo $cookies -> getValue(‘user’,20);//得到cookies的值,当user值不存在的时候,可以设置第二个参数

视图之视图的创建:

namespace app\controllers;

use yii\web\Controller;

use yii\web\cookie;

class WorldController extends Controller{

public function actionIndex(){

//echo ”

hello world

“;

return $this -> renderPartial(‘index’); //和tp一样显示views的页面和tp中使用$this -> display(); 前面必须要return 后面要有控制器里面的文件名后缀可省略。

}

}

 在yii框架中怎么传递一个变量呢?

namespace app\controllers;

use yii\web\Controller;

use yii\web\cookie;

class WorldController extends Controller{

public function actionIndex(){

$hello_str = ‘hello god!’;//字符串的传递视图使用

$test_arr = array(1,2);//数组传递视图的使用方式

//创建一个数组

$data = array();

//把需要传递的视图的数据,放到数组当中

$data[‘view_hello_str’] = $hello_str;

$data[‘view_test_arr’] = $test_arr;

return $this -> renderPartial(‘index’,$data);

}

}

在视图中接收的数据

 视图之数据安全:

namespace app\controllers;

use yii\web\Controller;

use yii\web\cookie;

class WorldController extends Controller{

public function actionIndex(){

$hello_str = ‘hello god!’;//字符串的传递视图使用

$test_arr = array(1,2);//数组传递视图的使用方式

 //创建一个数组

$data = array();

//把需要传递的视图的数据,放到数组当中

$data[‘view_hello_str’] = $hello_str;

$data[‘view_test_arr’] = $test_arr;

return $this -> renderPartial(‘index’,$data);

}

}

//入上图如果上面有js代码,那么如果有人放进去恶意的代码,可能产生跨站脚本攻击,从而危害到网站安全。当然可以使用html里面的类解决。通过这个类里面的方法对js里面的代码进行转义

use yii\helpers\Html; //使用这个html类

use yii\helpers\HtmlPurifier; //这个类是直接去除js等代码

?>

  视图中的布局文件:使用可以简化代码量

创建布局文件:可以再views/layouts中创建公共的布局文件

在里面设置一个common.php公共的文件,然后在设置index.php和about.php文件,在他们三者之间设置

namespace app\controllers; //命名空间地址

use yii\web\Controller;//controller需要使用哪个命名空间下面的类

use yii\web\cookie;

class HelloController extends Controller{

public $layout =”common”;//指定comon方法显示common文件

public function actionIndex(){

//那么我们想显示index.php和about.php里面内容的时候和common.php进行拼合这样才能达到原来的效果

return $this -> render(‘index’);//1:可以使用render方法,将视图文件内容放入$content里面

//2:会讲里面的布局文件给显示出来public $layout =”common”;

在common.php中设置:

common

//显示inde.php和about.php里面的内容

视图中显示另外一个视图:通过index.php显示about.php里面的内容,可以通过视图主键来搞定。

hello index

render(‘about’,array(‘v_hello_str’=>’hello world’));//render第二个参数传递的是数组?>

hello about

//通过返回的数组在about.php中用这种方式打印index.php传来的的数组值。

  • 评论:1 条
  • 分类:php实战教程 yii框架
  • 浏览:1719
  • 01月10日