【PHP-ZF】項目實戰縱覽(持續更新中...)

作前端怎能徹底不通後端?哈哈,開個玩笑而已。javascript

【Project 1】

萬事開頭難果真不假:從切完他們天馬行空的設計,到實現他們各類須要的特效,再到如今用zf敲後臺跑通數據庫。整整一週時間。接下來就是等他們上傳數據測試,和讓頭幫忙完善了。php

上帝啊,我人生中第一個徹底本身一手搞定的項目終於誕生了,不是沒寫事後臺,可是歷來沒有上線發佈,都是不多的代碼的小case。而後用了歷來沒用過的zf框架,這個我聽了兩小時視頻的東東。。。一邊看手冊一邊google,這個項目總算走到最後一步了。。。。css

come on!~據說後面還有二期和三期,加油加油!!!!!!!!等項目完工再來整理這一堆亂碼html

一、建立zf1.12的空項目

用zendstudio建立空項目,而後用zf.bat以該項目文件夾做爲目錄,建立zf1.12空項目。前端

二、空項目建立以後

【1】根據須要,在application.ini文件中進行相關配置。示例以下:/* 配置項必定要放在production之下 */java

[production] 
phpSettings.display_startup_errors = 1                             /* 系統配置,用於調試 */    本週開始作,一直沒開這三個選項,盲人摸象般解決了各類問題,但時間浪費了很多。
phpSettings.display_errors = 1                                         /* 系統配置,用於調試 */ 
resources.frontController.params.displayExceptions = 1      /* 系統配置,用於調試 */ 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.params.displayExceptions = 0 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

 /* 如下爲自定義共用配置項*/
website.title       = "**********"
website.keywords    = "**********" 
website.description = "**********" 
website.path = '/catholicProject/gunuoqi/public/'  
iDatabase.project_id = "**********" 
iDatabase.password   = "**********"

【2】在bootstrap.php中進行以下設置:jquery

/* 引入全局使用的自定義常量文件 */web

 protected function _initConst ()
 {
     require 'constants.php';
     require 'mongoConstants.php';
 }
 
 protected function _initConfig()
 {
     $this->_config = $this->getOptions();
     Zend_Registry::set('config', $this->_config);
 }
 
 protected function _initMongoDB ()
 {
     include('iDatabase.php');
 
     $mongoDB = new iDatabase($this->_config['iDatabase']['project_id'], $this->_config['iDatabase']['password']);
     Zend_Registry::set('mongoDB', $mongoDB);
     
     //var_dump($mongoDB->find('group',array()));
 }

【3】ajax請求:ajax

注意js的ajax請求地址能夠在頭部寫入前綴,後面進行拼接。該前綴由php輸出,即在application.ini中定義的配置項 website.path 的值。該值的設置見【1】所示。數據庫

【4】佈局文件的簡單使用:

範例以下:

其中須要注意的是:圖片,js,css的地址,改地址能夠由website.path 來拼接。也能夠採起《》中所示第二種兼容性方法。
其實,該方法提取出來的值跟上面website。path所設置的值通常狀況下都是以根目錄爲頂級目錄。

<?php echo $this->doctype() ?>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title><?php echo $this->config["website"]["description"].$this->title?></title>
     <meta name="description" content="<?php echo $this->config["website"]["description"]?>">
 <meta name="Keywords" content="<?php echo $this->config["website"]["keywords"]?>">
     <link rel="stylesheet" type="text/css" href="<?php echo $this->public;?>/css/public.css">
     <link rel="stylesheet" type="text/css" href="<?php echo $this->public;?>/css/<?php echo $this->style?>.css">
     <script type="text/javascript" src="<?php echo $this->public;?>/js/pl-jquery.min.v1.7.1.js"></script>
     <script type="text/javascript" src="<?php echo $this->public;?>/js/pl-jscroll.js"></script>
     <?php if($this->config){
     echo '<script type="text/javascript">var websitePath = "'.$this->config["website"]["path"].'"</script>';
     }?>
 </head>
 <body id="<?php echo $this->id ?>_box">
 <?php 
 if ($this->isLoading){
 echo '<div class="load_box" id="load_box"><div class="load_warp"><img src="'.$this->public.'/img/index-load-loading.gif" alt="古諾奇總體廚房"></div></div>';
 }
 ?>
 <div class="body_box">
     <div class="header">
         <div class="logo fl"><a href="<?php echo $this->public;?>/"></a></div>
         <div class="home fr"><a href="<?php echo $this->public;?>/"></a></div>
     </div>
     <div class="warp">
     <?php echo $this->layout()->content ?>
     </div>
 </div>
 <?php if(!$this->isHasNoFooter){
     echo('<div class="footer">&copy; 2012 *****有限公司</div>');
     }?>
 <script type="text/javascript" src="<?php echo $this->public;?>/js/public.js"></script> 
 </body>
 </html>

【4】若是是用的wamp集成環境,必定要手動開啓php_soap支持,譬如此次,用頭給的芒果的接口時,致使數據庫鏈接一直不成功,最後才發現是這個問題。唉。

【5】ajax請求,php的相關代碼:

 if($method == "ajax"){
     print_r($json);     // 打印出數據
     exit();                 //阻止模板調用,結束方法
     return;                //返回
 }

【6】文件引用,路徑問題:

 require_once 'Zend/Controller/Action.php';                      // 引用library中的庫文件目錄
 require_once APPLICATION_PATH.'/models/Group.php';   // 引用application中其餘文件夾中的php文件

注意:上面對action的引用,在用zendstudio自動生成模板文件時,會自動加上這句,註釋掉該行代碼仍能運行。

【7】頭給的iDatabase接口中,各不一樣條件查詢的使用範例:

 var_dump($id);
 $rst_group = $this->_group->findOne(array("_id" => $id));
 $rst_groupHot = $this->_groupHot->find(array("gourp_id"=> $id), array(),array(),0,100);
 $rst_groupXijie = $this->_groupXijie->find(array("group_id"=> $id), array(),array(),0,100);
 
 var_dump($this->_group->find(array(),array()));

三、項目發到到5.40以後

    a.修改路徑 application.ini中

    website.path = '/項目目錄文件名/'

    b.添加劇定向,在.htaccess文件中

    rewritebase /項目目錄文件名/



【Project 2】

上一次作PHP項目,已是一年多之前。由於不想求人,決定本身搭UED Workspace 平臺,再次投入 PHP 的懷抱。加油!~

-- 2014.5.12

%>_<%...由於某些氣死人的緣由,中途停掉,如今從新啓動。手裏資源多了,能夠作的事情更多了,我能夠專心規劃和搭建平臺了。

-- 2014.10.28

一、以 iwebsite2 爲模板新建空項目,數據庫 MongoDB

二、

相關文章
相關標籤/搜索