文档章节

【PHP-ZF】项目实战纵览(持续更新中...)

呢喃的猫咪
 呢喃的猫咪
发布于 2012/12/19 20:11
字数 1242
阅读 261
收藏 4
点赞 0
评论 0

做前端怎能完全不通后端?哈哈,开个玩笑而已。

【Project 1】

万事开头难果然不假:从切完他们天马行空的设计,到实现他们各种需要的特效,再到现在用zf敲后台跑通数据库。整整一周时间。接下来就是等他们上传数据测试,和让头帮忙完善了。

上帝啊,我人生中第一个完全自己一手搞定的项目终于诞生了,不是没写过后台,但是从来没有上线发布,都是很少的代码的小case。然后用了从来没用过的zf框架,这个我听了两小时视频的东东。。。一边看手册一边google,这个项目总算走到最后一步了。。。。

come on!~听说后面还有二期和三期,加油加油!!!!!!!!等项目完工再来整理这一堆乱码

1、创建zf1.12的空项目

用zendstudio创建空项目,然后用zf.bat以该项目文件夹作为目录,创建zf1.12空项目。

2、空项目创建之后

【1】根据需要,在application.ini文件中进行相关配置。示例如下:/* 配置项一定要放在production之下 */

[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中进行如下设置:

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

 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请求:

注意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()));

3、项目发到到5.40之后

    a.修改路径 application.ini中

    website.path = '/项目目录文件名/'

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

    rewritebase /项目目录文件名/



【Project 2】

上一次做PHP项目,已经是一年多以前。因为不想求人,决定自己搭UED Workspace 平台,再次投入 PHP 的怀抱。加油!~

-- 2014.5.12

%>_<%...因为某些气死人的原因,中途停掉,现在重新启动。手里资源多了,可以做的事情更多了,我可以专心规划和搭建平台了。

-- 2014.10.28

1、以 iwebsite2 为模板新建空项目,数据库 MongoDB

2、

© 著作权归作者所有

共有 人打赏支持
呢喃的猫咪

呢喃的猫咪

粉丝 133
博文 121
码字总数 300412
作品 0
杭州
程序员
2017年必看的免费linux视频及python视频资源合集

2017年必看的linux直播课程与linux在线课程汇总 腾讯课堂: Linux课程: 系列直播课程: 【免费】零基础Linux入门系统课程1(持续更新) https://ke.qq.com/course/202854 【免费】零基础lin...

运维自动化 ⋅ 2017/06/02 ⋅ 0

JFinal极速开发实战教程新鲜出炉~

JFinal极速开发实战教程新鲜出炉~ [持续更新中...] JFinal框架让 IT 工程师发挥更大的潜能,实现更大价值,同时也希望 JFinal 工具力量能帮助正在创业的朋友们提升效率、降低成本从而实现创业...

山东小木 ⋅ 2015/01/07 ⋅ 13

最佳实战Docker持续集成图文详解

前言 关于Docker的文章铺天盖地,但精品文章往往翻译居多。都说Docker天生适合持续集成/持续部署,但同样,可落地、实际可操作性的文章也很罕见。 基于这些情况,虽然我们专栏定位为运维管理...

langtu329 ⋅ 2016/05/25 ⋅ 0

读者们有福啊!部分真题或取材或思路借鉴于相关辅导书

读者们有福啊! 我大致看了一下相关QQ群及论坛,从网友们零星发出的试题中,感觉此次中级、高级项目经理考试试卷中的一些试题,或取材、借鉴于我的相关图书。 例如,中级系统集成项目管理工程...

wg_wg ⋅ 2013/11/10 ⋅ 0

PaddlePaddle三行代码入门 | 公开课

分享背景 ▼ 深度学习大浪潮之下,如何选择一个好用且不费事的框架,是很多人关心的事情。今天分享嘉宾将从各大框架的对比以及优劣上来纵览这些框架,并为大家介绍PaddlePaddle这个框架的入门...

y0w1as5eg37urfds ⋅ 2017/12/10 ⋅ 0

高级软件测试自学视频(性能、自动化、安全、手机app、管理)

恭喜“小强系列测试课程获得国家版权认证保护”,我们从不BB,只动手干! 《小强软件测试疯狂讲义》书籍出版,各大网店均可购买 “三级火箭”学习方式 1、参加培训班,由老师亲自上课进行讲解...

xqtesting ⋅ 2015/06/30 ⋅ 0

2017年前端从入门到精通教程(完整版)持续更新

本套教程为全网完整版,掌握本套资料收入不低于10K。适合任何想转行前端的人。假如本套资料无法看懂,请勿轻易入行。 第一部分已经更新链接: https://pan.baidu.com/s/1pLVomSz 密码: nein ...

大象分享 ⋅ 2017/02/13 ⋅ 25

Maven实战读书笔记(11)

敏捷实践之一——持续集成 (Continuous Integration) 1、Maven所实现的自动化构建正是持续集成的一个必要前提 2、持续集成还要求开发人员使用版本控制工具和持续集成服务器 3、Subversion就是...

祥林会跟你远走高飞 ⋅ 2014/12/17 ⋅ 0

Django Web极简实战1、为什么是Django

文章首发连载个人博客: Django Web开发极简实战0:为什么是Django 为什么是Django 为什么选择Django作为Web开发,因为……我喜欢^_^||,哈哈有点任性了。 实际上,作为一个成熟的Web框架,D...

州的先生 ⋅ 2017/11/28 ⋅ 0

张明云的Live——安卓 SDK 开发实战经验分享

零 Live主题本次Live入口:安卓 SDK 开发实战经验分享 一 关于我 我是张明云,常活跃于知乎和简书,知乎 Android 开发 和 编程 话题下优秀回答者;简书《Android 开发经验谈》专题管理员,超...

张明云 ⋅ 2016/12/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

apollo配置中心的学习笔记

公司现在配置文件太多了,导致配置文件修改起来还是非常麻烦的。在boss(业务运营支撑系统)中,配置文件是存放在jar包的,通过应用jar包来引用配置文件(区分不同环境)。这种方式虽然能够满足...

miaojiangmin ⋅ 2分钟前 ⋅ 0

Jena增删改查AP

插入、更新数据 public static void insert(){ String query = "PREFIX book: <http://www.book.com/jinyong/> \n" + " INSERT DATA \n" + ......

Vincent-Duan ⋅ 2分钟前 ⋅ 0

springMVC之与json数据交互方法

因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意: 1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数...

颖伙虫 ⋅ 6分钟前 ⋅ 0

用实例域代替序号(31)

1、许多枚举天生就与一个单独的int 值相关联 ordinal 方法,返回枚举常量在类型中的数字位置 下述,枚举修改很不方便,不好维护 永远不要根据枚举的序数导出与他相关联的值 而是将他保存在一...

职业搬砖20年 ⋅ 8分钟前 ⋅ 0

并发编程---ConcurrentHashMap源码解析

ConcurrentHashMap是java中为了解决HashMap不能支持高并发而设计的新的实现。 ConcurrentHashMap的类结构 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements C......

千古一梦888 ⋅ 11分钟前 ⋅ 0

微服务 WildFly Swarm 简介

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组...

woshixin ⋅ 16分钟前 ⋅ 0

android apk 瘦身

头条APK瘦身之路 随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 ...

GoldenVein ⋅ 20分钟前 ⋅ 1

mac机器学习开发环境部署及helloworld

一、下载并安装Anaconda2.7 https://repo.anaconda.com/archive/Anaconda2-5.2.0-MacOSX-x86_64.pkg 路径:/Users/shijun/anaconda2 二、运行Anaconda Navigator -> Environments -> base(ro......

八戒八戒八戒 ⋅ 31分钟前 ⋅ 0

关于日常开发的经验总结(Java),持续更新中

常量尽量使用枚举来表示,这样表现力会很强,因为枚举比一个常量类要有更多的扩展性 方法的入参和出参尽量不要使用Map,因为Map会让调用者感到迷惑,他不知道你里面装的什么,面向对象的开发...

小99 ⋅ 31分钟前 ⋅ 0

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 31分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部