mfc编程技巧与范例详解_简介与范例

mfc编程技巧与范例详解

简介:分享经验

2006年4月3日,IBM®和Zend Technologies Ltd.™开始将超文本预处理器(PHP)引擎和PHP开发工具引入System i平台。 PHP在开放源代码社区中很流行,因为它具有创建动态Web应用程序的功能。 PHP开源社区实际上已经开发了成千上万PHP应用程序,用于许多不同的用途。 System i客户会对这项新兴技术带入商业世界的应用程序和功能感到兴奋。

三个部分讨论了三个主要主题:

  • 概述 -System i上PHP的概述,包括PHP的历史,为什么对System i如此重要以及PHP有哪些类型的体系结构。
  • PHP Web应用程序 -PHP应用程序,包括三个特定应用程序的示例。
  • 在System i上安装PHP和数据库注意事项 -我们在System i上使用PHP的总体经验。 本部分包括有关PHP安装,如何将DB2数据库与PHP一起使用以及如何将现有PHP应用程序移植到DB2数据库的信息,包括在将MySQL®数据库应用程序移植到i5 /上的DB2时可能遇到的许多常见差异。操作系统。

System i上PHP概述

PHP始于Personal Home Page :一个简单的Perl黑客Rasmus Lerdorf于1994年编写。如今,PHP意味着超文本预处理器 。 1997年,Zeeve Suraski和Andi Gutmans生产了PHP3。不久之后,他们创建了Zend Technologies Ltd.,该公司生产用于PHP的Zend Engine。

PHP的主要功能之一是,大多数用PHP编写的应用程序都是开源的。 开源意味着每个人都可以自由访问该代码,并且可以免费或牟利地修改和重新分发它。 因此,有许多PHP应用程序可用,许多是免费的。 此类应用程序的一些示例包括Wiki,公告板和购物车,您可以使用它们来帮助管理和运营中小型企业。

PHP的流行

PHP是当今使用最广泛的Web编程语言之一,拥有450万以上PHP开发人员和2200万以上的使用PHP的Internet域。 PHP是一种功能强大的服务器端脚本语言,可用于创建动态网站和应用程序。

PHP的架构模式

为了在服务器上实现PHP,有两种流行的架构模式:LAMP和WIMP。 LAMP (Linux®-Apache-MySQL-PHP)使用基于Linux的操作系统。 LAMP使用Apache HTTP服务器和Zend Core PHP引擎,并使用MySQL连接到PHP应用程序。 WIMP (Windows®-IIS-MySQL-PHP)使用带有Microsoft Internet信息服务(IIS)而不是Apache的基于Windows的操作系统。

IBM和Zend软件工程师最近开发了第三种架构模式,以将PHP引入IBM System i平台。 该体系结构将i5 / OS与Apache HTTP服务器和IBM DB2数据库一起使用以连接到PHP应用程序。

在System i上使用PHP的好处

在System i平台上使用PHP的许多好处包括:

  • System i平台与支持强大的业务计算所需的组件集成在一起,例如操作系统,数据库,安全性和网络。 这些组件与Zend PHP框架相结合,为开发能够支持大量用户群的基于Web的应用程序提供了所需的资源。
  • PHP是用于开发关键业务Web应用程序的健壮,可伸缩,稳定,安全,性能驱动的语言。 中小型企业可以从System i机器上运行的这种自适应语言中受益。
  • 该语言通过提供对Web服务的支持来支持面向服务的体系结构(SOA)。
  • PHP与传统的系统,数据库和其他应用程序很好地集成在一起。
  • PHP具有成千上万个可定制的开源应用程序,您可以使用它们来快速启动和运行业务应用程序。
  • 即使数据库连接可能是最流行的用法,您也可以将PHP配置为作为独立的通用网关接口(CGI)脚本运行。 CGI版本可在所有服务器上和大多数操作系统上运行。 使用CGI的唯一缺点是性能降低。
  • 您可以将PHP脚本与各种外部库集成在一起以允许进行多种操作,从而利用System i平台。

与传统语言的兼容性

多年来,System i平台一直在运行RPG,COBOL和其他传统语言。 因为PHP与这些传统语言兼容,所以System i可以直接调用经过高度调整的RPG和COBOL例程。 使用直接与这些语言接口的API而不是使用SOA之类的替代方法可以简化Web应用程序的开发。 但是,应用程序的性能取决于其预期用途。 中小型企业应用程序可能更适合PHP实现,而大型,可扩展性更高的应用程序可能更适合SOA Web服务实现。 PHP与IBM使用的编程语言的兼容性可以节省客户的重新开发成本和更换现有软件所需的时间。

PHP Web应用程序

借助System i平台上PHP,客户可以利用成千上万个可用的开源Web应用程序。 PHP应用程序已在家庭和企业客户中流行。 这些应用程序中的许多使非技术人员可以快速开发和自定义应用程序,而无需特定的编程语言技能。 这些应用程序中有许多被称为内容管理系统 (CMS)应用程序,它使用户可以在不了解HTML的情况下轻松地创建和管理网站。 请参阅相关主题的地方下载一些PHP应用程序。

PHP应用程序可以分为两类:平面文件和数据库类型。 您可以在System i上轻松安装和配置这两种类型。 您可以使用PHP引擎在System i平台上安装平面文件PHP应用程序。 数据库驱动的应用程序通常与开源MySQL数据库一起使用。 您可以在System i上下载并安装MySQL。 请参阅相关主题链接对Zend Core的网站论坛中一个帖子和榜样。 在System i平台上安装MySQL数据库之后,可以安装和运行数据库驱动的应用程序。

可用的最受欢迎的开源应用程序包括Wiki,公告板和购物车。 这些不是可用的唯一开放源代码应用程序,但它们显示了PHP可以完成的各种功能的示例。

维基

Wiki是一种网站,允许用户快速,轻松地添加,删除或编辑其内容。 通常,用户无需注册或访问托管Web服务器上的文件即可编辑内容。 该PmWiki的网站(请参阅相关信息 )是使用PHP开源wiki开发。 PmWiki使用平面文件系统而不是数据库来维护站点的内容。 在System i上安装Zend Core框架后,将PmWiki文件放入Apache HTTP Web服务器的公共Web文件夹中。 从那里,使用PmWiki界面自定义Wiki。 编辑页面的语法只是标点符号的组合,以创建所需的文本效果。 除了基本编辑之外,您还可以包括用于处理高级功能的库,例如消息博客,安全性和多媒体。

公告栏

论坛和公告板允许与世界分享人们的问题,并为他们提供答案的可能性。 phpBB(PHP公告板)网站(请参阅参考资料 )可帮助您轻松开发公告板应用程序。 phpBB使您可以创建论坛,将论坛组织成类别,提交主题,提交回复以及发送小组和个人电子邮件。 phpBB实现了一个数据库来包含站点的内容并跟踪用户。

购物车

开源购物车应用程序使企业能够创建和定制自己的电子商务购物网站。 买家可以轻松地在线创建帐户并购买商品。 Zen Cart网站(请参阅参考资料 )是在哪里可以找到这样的应用程序的示例。 Zen Cart具有许多可定制的模板,供您开发业务应用程序。 使用基于Web的GUI可以轻松访问其他修改和管理功能。 由于购物网站要求其客户安全,因此Zen Cart整合了SSL和数字证书的使用。 专门为服务器计算机上的Zen Cart存储创建本地证书。 Zen Cart商店的客户登录商店后会收到并保存证书。 浏览器和服务器均使用证书对传输的文本进行加密和解密,从而使用户可以安全地使用Zen Cart。 Zen Cart直接与数据库连接以存储其数据。

系统上PHP:安装和数据库注意事项

选择开放源应用程序时,System i用户要考虑几个问题。 第一个也是最直接的问题是从现有应用程序的多样性中进行选择。 Zend Core是System i平台上当前可用于i5 / OS的唯一PHP引擎。 在安装Zend Core之前,您需要安装System i软件包随附的13个许可程序(请参阅表1)。 用于i5 / O的Zend Core框架的引入极大地简化了System i计算机上PHP的安装。 Zend的设置工具为System i平台提供了PHP引擎,Apache HTTP Web服务器,DB2本机支持和Web GUI管理。

Zend Core产品是免费的许可产品。 安装过程涉及在System i上创建SAVF文件,并将Zend Core复制到二进制文件中。 Zend Core包含详细的说明以及从公司网站上下载的内容(请参阅参考资料 )。

通过安装Zend Core,可以配置关联PHP Apache Web服务器。 您可以通过Web浏览器使用GUI管理页面轻松地执行框架的其他自定义。 目前仅在i5 / OS版本5发行版4上支持Zend PHP引擎。

安装Zend PHP引擎的i5 / OS前提条件是:

  • i5 / OS版本5发行版4修改0或更高版本
  • 最新版本的PTF
  • / usr / local目录,因为将通过添加文件夹将产品安装在此目录下
  • 以下Zend许可程序(使用以下命令检查: go licpgm ,选项10):
表1. i5 / OS上的Zend Core前提条件
描述 产品选项 许可程序
适用于i5 / OS的IBM便携式实用程序 *基础 5733sc1
OpenSSH,OpenSST,Zlib 1个 5733sc1
系统开放性包括 13 5722ss1
壳牌 30 5722ss1
便携式应用解决方案环境 33 5722ss1
数字证书管理器 34 5722ss1
CCA密码服务提供商 35 5722ss1

PHP的语法

PHP的语法易于使用,并且与C和Perl非常相似。 用PHP和C语言处理数学和逻辑运算符的方式相同。 您可以用PHP编写新功能,就像用Java™语言编写新功能一样。 PHP的最新版本是面向对象的,类似于Java语言。 一些差异包括:

  • 所有PHP代码都以标签(如Javascript)开头和结尾。 这使PHP可以直接嵌入网站和应用程序中HTML代码中。
  • PHP中的变量以美元符号($)开头。
  • 变量是松散类型的,曾经用于整数的相同变量以后可以用作字符。 根据您的观点,这可以扩展变量的多功能性,也可以使跟踪单个变量更加困难。
清单1.对PHP中的不同类型使用相同变量的示例
<?php

$var = 5;

echo '$var';
//$var will print as '5'

$var = 'string';

echo '$var'
//Now, $var will print as 'string' !

?>

开始使用PHP的最好方法是访问PHP资源站点(请参阅相关的主题 )。 该站点提供了PHP的所有语法和功能,以及详细的示例。 开源社区不断对其进行更新,并提供了新的示例和说明。

连接到DB2数据库

使用PHP,在连接到DB2数据库时,可以使用两种类型的驱动程序之一来创建连接。 两者中的第一个和较旧的是ODBC连接驱动程序。 使用以下代码示例通过ODBC连接到DB2数据库:

清单2. ODBC连接
<?php
	
$db_host	= "server.mynetwork";
$db_user	= "dbuser";
$db_pass	= "dbpass";
	
odbc_connect($db_host, $db_user, $db_pass, "SQL_CUR_USE_ODBC");
	
@odbc_setoption($this->db_connectid, 1, SQL_ATTR_COMMIT, SQL_TXN_NO_COMMIT)
  or die('Failed setoption: ' . odbc_error() . ":" . odbc_errormsg());
			
@odbc_setoption($this->db_connectid, 1, SQL_ATTR_DBC_DEFAULT_LIB, $this->dbname)
  or die('Failed select: ' . odbc_error() . ":" . odbc_errormsg());

?>

连接到DB2数据库的第二种方法是使用IBM_DB2连接,如下面的代码示例所示。 这种较新的方法可以帮助解决使用ODBC时遇到的一些连接问题,但是这两种方法都可以用PHP连接到DB2。

清单3. IBM_DB2连接
<?php

$database	= 'SAMPLE';
$user		= 'db2inst1';
$password	= 'ibmdb2';

db2_connect($database, $user, $password);

?>

DB2模式的使用

DB2 i5 / OS版的缺省配置是作为单个系统范围的数据库。 模式是System i平台上相关数据库对象的逻辑容器。 在DB2中创建的模式类似于MySQL中的数据库。 换句话说,模式就像MySQL中的数据库一样,可以在其中创建和填充表。 您可以使用CREATE SCHEMA语句创建DB2模式。

从DB2数据库引用数据

从DB2数据库引用数据时,需要特别考虑的事情包括引用表名列名表数据

在DB2中引用表名

SQL语句中的DB2表引用可以是无限定的,也可以是使用架构名称显式限定的。

清单4.引用表名称的示例
INSERT INTO table VALUES(val1, val2, â??¦ valn);
//MySQL Insert Statement

INSERT INTO table VALUES(val1, val2, â??¦ valn);
INSERT INTO schema.table VALUES(val1, val2, â??¦ valn);
//DB2 Insert Statements

与DB2 for i5 / OSPHP连接默认使用SQL命名约定。 使用SQL命名约定,搜索不合格对象的唯一架构是当前(或默认)架构。 当前架构值通常默认为与当前SQL授权名称(或用户配置文件名称)匹配的架构。 如果授权名称为JOHNDOE,并且引用了不合格的对象,那么DB2 i5 / OS版希望在名为JOHNDOE的模式中找到该对象。 您可以使用i5_lib连接选项来指定用于连接上不合格引用的默认模式。

引用DB2中的列名

缺省情况下,DB2中表的字段名称使用大写字母,即使在定义时将其小写也是如此。 因此,在PHP脚本中引用它们时,将它们大写。

从DB2中的表引用和访问数据

从DB2表检索数据时,请考虑数据是来自字段(列标题)还是实际值(列和行中的所有数据)。 字段名称通常可以作为字符串检索。 但是,将使用不可见的额外字符返回列的值,例如:

表2.不可见的额外字符
角色名字 字符 ASCII码
普通空间 ASCII 32(0x20)
标签 “ \ t” ASCII 9(0x09)
新行(换行) “ \ n” ASCII 10(0x0A)
回车 “ \ r” ASCII 13(0x0D)
空字节 “ \ 0” ASCII 0(0x00)
垂直标签 “ \ x0B” ASCII 11(0x0B)

因此,如果您需要通过代码中的值引用此数据,建议使用一个函数,例如trim(),该函数会删除多余的字符。

将PHP应用程序从MySQL迁移到DB2

尽管SQL是一种通用语言,但根据数据库类型的不同,该语言的使用也略有不同。 大多数PHP应用程序都连接到MySQL数据库。 MySQL是一个开放源代码数据库,您可以免费下载并与许多数据库驱动PHP应用程序一起使用。 您可以在System i上下载并安装MySQL。

一些System i客户可能希望使用DB2数据库而不是开源MySQL。 本节描述将PHP应用程序从MySQL迁移到DB2时的注意事项。 将SQL语句从MySQL迁移到DB2时,会发现语法和功能上的差异。 表3列出了一些区别; 有关差异的说明,请参见表3。

表3. MySQL和DB2语句之间的区别
所需动作 MySQL语句 DB2陈述式
从表中返回选定的行数 SQL-> LIMIT SQL->获取FETCH FIRST n ROWS
在插入语句之后确定表的最后生成的ID PHP-> mysql_insert_id SQL-> SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1;
显示表格 SQL-> SHOW TABLES FROM table_name SQL-> SELECT TABLE_NAME FROM schema_name.SYSTABLES WHERE TABLE_NAME=table_name
显示索引 SQL-> SHOW INDEX FROM table_name SQL-> SELECT INDEX_NAME FROM schema_name.SYSINDEXES WHERE TABLE_NAME=table_name
确定受SQL语句影响的行数 mysql_num_rows() > mysql_num_rows()用于SELECT语句
mysql_affected_rows()用于INSERT,UPDATE,DELETE
db2_num_rows() > db2_num_rows() (在使用不可滚动游标时不适用于SELECT语句)
将键插入已经存在主键的表中 SQL-> IGNORE删除插入语句
设置列以自动生成并增加其值 auto_increment GENERATED BY DEFAULT AS IDENTITY
逃脱角色 在字符前面添加斜杠('\'),例如“ Smith \'s” 在字符前面添加撇号('),例如“ Smith”
要返回一个由列名和位置索引的数组,表示结果集中的一行 mysql_fetch_array() db2_fetch_both()

连接到数据库

当Web应用程序连接到MySQL数据库时,它们通常在PHP中使用mysql_connect函数。 要连接到DB2,有两个不同的选项:odbc_connect和db2_connect(请参阅连接到DB2数据库 )。 ODBC驱动程序早于IBM_DB2驱动程序,但是由于ODBC不一定专门用于DB2数据库,因此开放源代码应用程序更经常使用OBDC。

DB2和MySQL之间SQL差异

DB2和MySQLSQL之间有区别。 其中一些差异包括数据类型数据定义语言显示表

DB2和MySQL之间的数据类型差异

数据库驱动的Web应用程序通常会自动生成脚本和表以供初始使用。 这些脚本尽管全部用SQL编写,但在语法上有所不同,具体取决于数据库。 例如,在将应用程序从MySQL移植到DB2时,请确保将某些MySQL数据类型名称更改为等效的DB2名称。 表4显示了此类翻译的一些示例。

表4. MySQL和DB2之间的数据类型差异
的MySQL DB2
天音 小灵通
中号 整数
INT 整数
细语 CLOB(255)

数据定义语言的差异

在将所有数据类型名称更改为使用DB2语法的名称之后,应用程序移植过程的下一步是将数据定义语言(DDL)语法更改为DB2语法。 更改的语法包括:

  • 授予和撤销用户权限
  • 创建和删除表,视图和索引
  • 定义参照完整性规则

以下代码示例显示了差异。

清单5.用于创建表的MySQL示例
create table myTable (
    age int(11) unsigned NOT NULL out_increment,
    first_name varchar(10) unsigned default NULL,
    last_name varchar(20) unsigned default NULL,
    PRIMARY KEY (age)) type-MyIASM;
清单6.用于创建表的DB2示例
Create table myTable (
    age INT NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    first_name VARCHAR(10) default NULL
    last_name VARCHAR(20) default NULL
    PRIMARY KEY (age));

显示表格

DB2和MySQL之间的另一个区别是使用SHOW TABLES和SHOW INDEX FROM table_name,这在MySQL中受支持,但在DB2中不支持。 在DB2中,用SELECT语句替换这些语句,如表5所示。

表5.使用MySQL和DB2显示数据库,表和索引
的MySQL DB2
显示数据库 从SYSIBM.SQLSCHEMAS中选择​​TABLE_SCHEM
显示表格 从SYSTABLES的TABLE_SCHEMA = schema_name中选择TABLE_NAME
显示来自table_name的索引 从SYSINDEXES中选择INDEX_NAME,其中TABLE_NAME = table_name和INDEX_SCHEMA = schema_name

转义符

DB2和MySQL之间的另一个区别是如何转义字符。 在MySQL中,在要转义的字符之前添加斜杠('\')。 在DB2中,通过在其前面放置撇号来转义该字符。 例如,如果要在SQL语句中放置单词“ Smith's”,请键入“ Smith \'s”。 如果您希望在DB2中获得相同的结果,请键入“ Smith's”。

有用的工具

手动转换这些脚本可能是一个漫长的过程。 但是,有一些转换工具可以帮助转换SQL语法和数据库移植。 例如,IBM DB2迁移工具包(MTK)是免费软件(请参阅参考资料 )。 DB2 MTK当前支持将MySQL数据库转换为DB2 SQL语法,但不支持DB2 i5 / OS版目标。 即将发布的DB2 MTK版本支持将MySQL转换为i5 / OS SQL语法的DB2。 请参阅相关信息中的链接到IBM DB2迁移工具包网页最新的版本信息。 DB2 Migration Toolkit最适合转换长SQL脚本。 此工具并非旨在直接转换PHP代码中嵌入SQL语句。 但是,您可以将单个SQL语句复制到DB2 MTK Translator实用程序中,以简化复杂MySQL SQL语句的转换。

PHP在使用DB2和MySQL之间的区别

从MySQL数据库转换为DB2数据库时,API可能会出现差异。 连接到MySQL的语法不会直接转换为DB2的语法。 MySQL连接存在的功能可能不适用于DB2连接,而DB2连接存在的功能可能不适用于MySQL连接。 通常,具有类似名称的函数可能会返回完全不相关的值。 甚至可能具有相同名称且返回相同值的函数也可能具有完全不同的参数顺序。 在DB2和MySQL中执行不同功能的一些示例包括:

  • mysql_index_id()函数返回由上一条INSERT语句生成的ID。 在DB2中,您使用自动递增的标识列和IDENTITY_VAL_LOCAL函数来获得相同的结果。
  • db2_num_rows()函数返回受SQL语句影响的行数。 在DB2中,此函数适用于INSERT,DELETE和UPDATE语句。 该函数的MySQL版本mysql_num_rows()仅适用于SELECT语句。
  • db2_fetch_array()函数返回一个按列位置索引的数组,该数组表示结果集中的一行。 该函数的MySQL等效项mysql_fetch_array()返回一个数组,该数组通过列位置和列名进行数字索引。

结论:使中小企业受益

System i上PHP对中小型企业来说是一个巨大的好处。 了解PHP的基本背景和体系结构类型后,您可以单独或通过支持的数据库在System i上下载并安装数千个可用的应用程序。 将应用程序从MySQL数据库移植到DB2时需要考虑一些因素,例如数据库连接性。 但是,PHP提供的尖端,低成本应用程序与可靠的System i平台和DB2数据库相结合,是任何成长中的企业的战略选择。


翻译自: https://www.ibm.com/developerworks/systems/library/es-path2php/index.html

mfc编程技巧与范例详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值