`
yipsilon
  • 浏览: 244717 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ExtJS 2.0 的PHP封装

阅读更多
本来想自己研发UI库,自从看到了ExtJS,我们彻底打消了重复造轮子的想法,也决定使用ExtJS来作为CMSPAD UI部分的基础类库。于是,偶们想到了一个个人感觉比较BT的方法来实现它--使用PHP来进行封装。

(以下代码和演示已经验证可用)
先看看运行ExtJS库PHP代码:
<?php
import('ExtJS:ExtApplication');
import('ExtJS:ExtButton');
import('ExtJS:ExtMessageBox');
class Test1 implements ExtRunnable{
	
  /**
   * @param ExtApplication $application
   */
  public function run($application){
    $button = new ExtButton(array('text' => 'hello world!', 'width' => '500px', 'renderTo' => 'extButton'), 'button');
    $button->disable();
    /*
    $msgbox = new ExtMessageBox(array('title' => 'Address', 'msg' => 'Please enter your address:', 'width' => 300, 'buttons' => ExtConstant::getConstant('OKCANCEL'), 'multiline' => true), 'msgbox');
    */
    ExtMessageBox::alert('Hello', 'World!');
  }
}
?>

以上代码假设保存在inc/test/Test1.php文件中,再看看前台模板是怎么调用的:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Extjs 2.0 Example Test</title>
    <!-- 调用ExtJS自带的样式文件 -->
    <{portlet name="ExtJS" view="stylesheets"}>
    <!-- 调用ExtJS的脚本文件,当前指定的是所有脚本 -->
    <{portlet name="ExtJS" view="javascripts" extra="all" debug=true}>
    <!-- 执行Test1,也就是上面的文件 -->
    <{portlet name="ExtJS" view="application" main="ExtJS:test.Test1"}>
  </head>
  <body>
    <div id="extButton"></div>
    This is body.
  </body>
</html>

下面看看附件中的执行效果截图,页面中有三个元素:一个被禁用的按钮、一个文本和一个对话框。正好是执行的那两个。看起来,还是好用的。:)



以下是输出HTML页面的源代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Extjs 2.0 Example Test</title>
    <!-- 调用ExtJS自带的样式文件 -->
    <link rel="stylesheet" type="text/css" href="/CMSPAD/kernel/../portlet/ExtJS/lib/resources/css/ext-all.css" />
    <!-- 调用ExtJS的脚本文件,当前指定的是所有脚本 -->
    <script type="text/javascript" src="/CMSPAD/kernel/../portlet/ExtJS/lib/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="/CMSPAD/kernel/../portlet/ExtJS/lib/ext-all-debug.js"></script>
    <!-- 执行Test1,也就是上面的文件 -->
    <script type="text/javascript">
      Ext.onReady(function(){
        var button = new Ext.Button({text:'hello world!',width:'500px',renderTo:'extButton'});
        button.disable();
        Ext.MessageBox.alert('Hello','World!');
      });
    </script>
  </head>
  <body>
    <div id="extButton"></div>
    This is body.
  </body>
</html>
目前UI系统之正在初级验证和架构阶段,封装了一些常用代码,把小家伙们累惨了*_*。待到进入Beta测试时,我会发布更多特性~~

大家还有什么想法,可以一起研究哦~~
  • 描述: 执行效果截图
  • 大小: 29.8 KB
分享到:
评论
9 楼 yipsilon 2007-12-03  
yeaha 写道
对于初学者而言,把js跟服务器端脚本混为一谈就是比较危险的事,js最大的毛病就是效率问题和浏览器兼容问题,初学者很容易掉到这两个坑里,会写出逻辑正确但是实际用起来很不爽,很慢的东西
对于熟练工,降低门槛的效用又没有什么意义
不过楼主的想法的确有点意思,在某些特定场合也许很合适


恩,就是因为JS跟服务器端脚本混为一谈是很危险的,所以,我觉得只让他们学习服务器端脚本,或者说利用服务器端脚本的方式来操作JS,那样就不会产生两种语言混淆的危险了,不是么?
8 楼 yeaha 2007-12-03  
对于初学者而言,把js跟服务器端脚本混为一谈就是比较危险的事,js最大的毛病就是效率问题和浏览器兼容问题,初学者很容易掉到这两个坑里,会写出逻辑正确但是实际用起来很不爽,很慢的东西
对于熟练工,降低门槛的效用又没有什么意义
不过楼主的想法的确有点意思,在某些特定场合也许很合适
7 楼 yipsilon 2007-12-03  
chenjf2k 写道
没有必要这么做,使用EXT技术而只要求开发人员仅具备初级javascript水平,这是非常危险的,效果往往适得其反...
封装后虽然使用方便了,但对于扩展性和移植性都不太好


这位仁兄的回答,我不太清楚为什么是非常危险的。之所以要封装它:

因为,“我们没有找到这套ExtJS库到底是给谁来做”这个问题的答案。如果要让美工使用它,那将是比较困难的,毕竟美工的能力点并不在于熟悉Javascript,而是页面设计能力,再者说,学习面向对象的概念是比较吃力的,更别说像javascript和ExtJS(例如对applyTo、extend、override等函数的理解)这样结构特殊的语言。

如果让程序员来使用它,在没有版本管理(据说好多小的项目或团队还使用着FTP和最后修改日期来管理项目文件)的情况下,会出现两者同时修改的文件被覆盖的情况,这样就不好办了。

其实以上分析最重要的在于扩展问题:美工要扩展ExtJS大多数情况下肯定是不行了,毕竟不是干这一行的;程序员呢,可以学会,但要不断滴在后台程序和前台模板之间切换,在后台程序中编写硬性的JS生成代码、在前台模板中加入相关的标签和代码,而且会发生上述的错误,这在一定程度上会降低开发效率。而这套封装库,目前应该说一点儿扩展性都没有,但不代表以后也没有,如果我们找到了合适的扩展方法,那会同时解决上面分析的问题,程序员不用深入学习Javascript面向对象的语法和ExtJS库的操作方式,也不用不时滴切换思路了,而美工只需要把心思全面关注到界面设计(包括CSS)了。归根到底,还是降低了用人和学习成本。呵呵...

PS:我觉得封装代码在Java中应该更好实现,毕竟在我眼里它是超强的。:)
6 楼 yipsilon 2007-12-03  
sp42 写道
PHP以操作数组为中心(虽然PHP5更OO),JS以操作HASH TABLE为中心(object based==hash/ or object as container),楼主何不以向原汁原味的JS学习,收获或者更大!


PHP的数组概念,一部分就是Hashtable的概念,例如:$arr = array('key1' = > 'value1', 'key2' => 2); 使用时: $arr['key1'] $arr['name'] $arr[7] ... 所以,我们做这套东西时也是为了简化开发,全面使用PHP数组来作为必要数据的操作。而面向对象,更多是为了兼容ExtJS的functions。
5 楼 chenjf2k 2007-12-02  
yipsilon 写道
本来我们封装的目的就是想在PHP中使用跟Javascript基本一样的语法来操作ExtJS 2.0库。这样有个好处就是,其他PHP开发人员并不需要深入学习Javascript语言,降低了企业用人的技术门槛,可以更快速地让开发人员投入到工作状态。而且,PHP封装的库在对象和函数上基本跟原JS库的结构基本相同,这样,如果有必要的需求,PHP的开发人员要直接使用Javascript操作ExtJS库时,因了解其结构,入门也更快速些。总体来说,就是降低开发人员的初期技术门槛,为项目贡献自己最大的力量。呵呵。
没有必要这么做,使用EXT技术而只要求开发人员仅具备初级javascript水平,这是非常危险的,效果往往适得其反...
封装后虽然使用方便了,但对于扩展性和移植性都不太好
4 楼 yipsilon 2007-12-02  
本来我们封装的目的就是想在PHP中使用跟Javascript基本一样的语法来操作ExtJS 2.0库。这样有个好处就是,其他PHP开发人员并不需要深入学习Javascript语言,降低了企业用人的技术门槛,可以更快速地让开发人员投入到工作状态。而且,PHP封装的库在对象和函数上基本跟原JS库的结构基本相同,这样,如果有必要的需求,PHP的开发人员要直接使用Javascript操作ExtJS库时,因了解其结构,入门也更快速些。总体来说,就是降低开发人员的初期技术门槛,为项目贡献自己最大的力量。呵呵。
3 楼 yipsilon 2007-12-02  
本来我们封装的目的就是想在PHP中使用跟Javascript基本一样的语法来操作ExtJS 2.0库。这样有个好处就是,其他PHP开发人员并不需要深入学习Javascript语言,降低了企业用人的技术门槛,可以更快速地让开发人员投入到工作状态。而且,PHP封装的库在对象和函数上基本跟原JS库的结构基本相同,这样,如果有必要的需求,PHP的开发人员要直接使用Javascript操作ExtJS库时,因了解其结构,入门也更快速些。总体来说,就是降低开发人员的初期技术门槛,为项目贡献自己最大的力量。呵呵。
2 楼 cnpollux 2007-12-01  
嗯。ExtJS有它自己的开发模式,我觉得还是不要封装的好。封装得太多,如果某些地方不符合使用的人的要求,他可能还得hack一下。
1 楼 sp42 2007-12-01  
PHP以操作数组为中心(虽然PHP5更OO),JS以操作HASH TABLE为中心(object based==hash/ or object as container),楼主何不以向原汁原味的JS学习,收获或者更大!

相关推荐

    ExtJs2.0学习系列

    ExtJS是一种基于JavaScript的开源富客户端框架,特别适用于构建企业级的Web应用程序。...文档《ExtJs2.0学习系列.doc》应包含了关于这些主题的详细教程和示例,是学习ExtJS 2.0不可或缺的参考资料。

    extJs2.0 中文手册

    由于无法直接查看图像内容,我将基于标题、描述和标签的内容,为您提供关于ExtJs2.0中文手册的知识点概述。 ExtJs是一个强大的JavaScript框架,用于创建富互联网应用(RIA)。它提供了一套丰富的组件和工具来构建...

    资料:包括extjs2.0源码

    7. **Ajax交互**:EXTJS 2.0通过Ajax技术实现与服务器的异步通信,提供了强大的请求和响应处理机制,包括XMLHttpRequest封装、JSON数据格式支持等。 8. **事件系统**:EXTJS 2.0拥有强大的事件驱动模型,组件间通过...

    Extjs2.0 智能提示

    在ExtJS 2.0版本中,智能提示(Intelligent Hinting)是一项关键特性,它增强了开发人员的编码体验,提高了开发效率。智能提示功能提供了自动补全、代码提示以及类库方法和属性的快速参考,使得编写ExtJS代码更为...

    ExtJS2.0简明教程

    ExtJS 是一个很不错的Ajax 框架,可以用来开发带有华丽外观的富客户端应用,ExtJS 是一个用javascript 编写,与后台技术无关的前端ajax 框架...本教程主要是针对ExtJS2.0 进行介绍,全部代码、截图等都是基于ExtJS2.0。

    ajax框架之extjs2.0

    ExtJS 2.0是一个基于JavaScript的开源AJAX框架,专为构建富互联网应用程序(RIA)而设计。它提供了一套完整的组件模型、数据绑定机制、丰富的用户界面控件和强大的API,使得开发者能够轻松创建功能强大且交互性强的...

    ExtJS2.0实用简明教程

    最近我们在几个应用都使用到了ExtJS,对公司以前开发的一个OA系统也正在使用ExtJS2.0进行改造,使得整个系统在用户体验上有了非常大的变化。本教程记录了前段时间本人学习ExtJS的一些心得及小结,希望能帮助正在学习...

    ExtJS2.0.rar_extjs2.0

    这个"ExtJS2.0.rar"压缩包包含了关于如何使用ExtJS 2.0的资源,特别是"ExtJS2.0实用简明教程.chm",这是一份详细的指导文档,可以帮助开发者快速掌握该框架的核心概念和技术。 ExtJS 2.0的主要特点包括: 1. **...

    ExtJS2.0及API文档和实用开发指南

    在本资源包中,我们重点关注的是ExtJS的2.0版本及其相关的API文档和实用开发指南,这对于初学者理解并掌握这个框架至关重要。 首先,ExtJS 2.0是该框架的一个早期版本,虽然现在已经有了更新的版本,但每个版本都有...

    用EXTJS2.0做的派出所网站及后台管理

    EXTJS2.0是一款强大的JavaScript框架,主要用于构建富客户端应用程序,尤其在企业级Web应用的前端界面设计上表现卓越。这个项目是利用EXTJS2.0来开发的一个派出所的网站和后台管理系统,它展示了EXTJS在实现高效、...

    extjs2.0 下拉列

    ExtJS 2.0 是一个基于 JavaScript 的前端框架,用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括各种用户界面元素,如表格、窗口、菜单和表单控件等。在本例中,我们将重点讨论如何在 ExtJS 2.0 中实现...

    EXTJS 2.0 完整官方范例

    EXTJS 2.0的官方范例,离线html格式!

    ExtJS2.0中文API珍藏版(Include Adobe Air)

    这个"ExtJS2.0中文API珍藏版"提供了一套完整的文档,使开发者能够更方便地理解和使用ExtJS 2.0版本的功能。API(Application Programming Interface)是软件开发中的一个重要概念,它定义了开发者如何与库或框架进行...

    ExtJS2.0实用简明教程和api

    ExtJS2.0实用简明教程和ExtJSapi

    Ext2 核心 API 中文详解 ExtJS2.0实用简明教程 ExtJS2.0教程 ExtJS2.0实用简明教程(easyjf) ext中文API+ sample

    本教程主要聚焦于ExtJS 2.0版本的核心API,帮助开发者深入理解和运用这个框架。 **一、ExtJS基本概念** 1. **组件(Components)**: ExtJS的核心是其组件系统,包括按钮、表格、面板、窗口等,这些组件构建了整个...

    ExtJS2.0实用简明教程.rar

    ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程ExtJS2.0实用简明教程

    ExtJs2.0学习系列.CHM

    关于ext学习的资料,有些例子 ExtJs2.0学习系列.CHM

    《ExtJS2.0实用简明教程》之应用ExtJS详细介绍

    《ExtJS2.0实用简明教程》之应用ExtJS详细介绍

    extjs2.0 使用简明教程之窗口分组

    extjs2.0 使用简明教程之窗口分组,实现分组窗体

    extjs2.0(包含17套主题皮肤)

    EXTJS 2.0 是一个历史悠久的JavaScript框架,由Sencha公司开发,它以其强大的组件化、可定制性和丰富的用户界面而闻名。这个版本包含了17套不同的主题皮肤,为开发者提供了更多的选择来满足不同项目的需求,使得应用...

Global site tag (gtag.js) - Google Analytics