php在母语方面的支持(转载)

 更新时间:2016年11月25日 17:14  点击:2062
Native Language Support
PHP is a great language for developing dynamic web sites. Some do it for fun while others for business. It is true that a great part of the web is in English. However, if you are targeting a worldwide audience, then neither English nor Esperanto alone is an option.
If you need to deliver content in several languages, it is a good idea to explore several alternatives. However, some alternatives may not be suitable for dynamic websites. Added to that, there is the overhead of time spent in maintenance. To further complicate things, your needs may not be totally in line with the resources you have at your disposal. Therefore, it is advisable to choose an alternative that suits you best.
I found myself in positions which required me to deliver content in both English and Spanish, and in one project a third language. Here are the possibilities I explored:
Explicit links for each language
Use Apache's mod_negotiation
Use GNU Gettext support in PHP
Write your own
This article gives a brief introduction to the first three possibilities, but then we will go about the fourth solution which suited the requirements best, given the set of constraints. I am assuming that the reader is at least familiar with PHP programming and the use of PHP classes.
Principles of content negotiation
Before we go into exploring the various options, we should understand the basics of content negotiation and how that applies to the development framework. Then, you will be able to develop a web application that can deliver its content in the language of choice of your visitor.
By simply configuring the web browser, the user can set it up in a way that his or her preferred language is used when available. Several languages can be specified in a prioritized list, by setting up the preferences or option of the browser.
ands this list of preferred languages on every request made to the site. This action is totally transparent to the user, as the information gets sent in the Accept-Language header, for example:
           PHP中的类
       作者:酷熊
我觉得自从使用PHP以来最难以理解的概念就是PHP的类。我除了正在学习MySQL一些基本知识以外,对于其他的数据库引擎没有经验。此前对于OOP面向对象编程我也没有经验,OOP对于我来说也是个新鲜事物,但是通过对其原理以及为何如此强大的理解,使我有了一定的我了解如果任何程序都用OOP来实现的话,无疑会得到一个强大的程序;但是对我而言,如果我只是认为自己了解了其中的机制,而不把这种理解应用到编程实践,OOP对我来说将始终停留在纸上谈兵的层次上。于是,几天前,在利用常规的函数来实现一些功能时,我尝试采用对象来实现,我发现的确这让我的工作更加简单了!于是我将这些经验写出来,希望能够帮助象我一样的人们。
类说穿了就是一些变量(OOP概念中的成员变量,译者注)和一些操作处理这些变量的函数(OOP概念中的成员函数)的集合。它提供了一种在程序中以现实生活的形态来思考问题的方法,换句话说,就是描述了一个对象。反之,一个对象或者实例,就是这个类的真正实现。比如说我们要描述一辆自行车:一个合适的自行车类应该含有如下变量:$pedals(脚蹬),$chain(链条),$front wheel(前轮),$rear wheel(后轮),$brakes(刹车), and $handl_bars(车把)。你可以参考现实生活中对一辆自行车的操作来实现你的脚本。比如可以通过向函数Accelerate()传递一个$Braking_Force,并将这个变量应用于你所定义的实例的其他变量如$front_wheel, $rear_wheel,也可以返回操作的结果,从而实现相应的操作。
看起来很美,但是这些通过常规的函数和变量不是也能够实现吗?不错,如果你的程序中只有一个自行车的实例,为它单独定义一个类的确意思不大,但是如果你需要很多自行车实例的时候呢?但是你程序中的变量传递流会变得相当复杂,你得时时保证每个自行车实例指定的变量都正确的传递给了不同的函数。但是使用对象大大降低了你所传递的变量的数量,因为对象中的处理函数(所谓的方法method,译者著。)自动的认定作用范围就限制在本对象之内,那么它所能够操作的对象也就限制在了对象范围内。而且对象的定义可以非常容易的包含到不同的脚本只用,(在得到可重用性的同时)还从而保证了每一个自行车的在不同的脚本中工作方式都是一致的。
让我们来创建一个实际的类,这个类我几乎用在了我站点的每一个页面中,也许你会从中发现值得参考的东西。
如需转载,请注明出处!(刁馋在此先谢过了……)
Oracle TAF的配置
TAF为Transparent Application FailOver的缩写,一般应用TAF都是在OPS/RAC环境中。从8i开始有的这一功能,目的和想法都是很好的,但目前应用还很有限,本文将针对TAF相关问题作个详细探讨。
本文的测试环境是Tru64 V5.1+ Oracle9.2.0.1 RAC。
一、相关参数的说明
说实话oracle关于网络的几个配置参数真的是太乱了,很多人都弄不清到底是怎么回事,常见的错误为:
"ORA-12514 :TNS:listener could not resolve SERVICE_NAME given in connect descriptor" 和
"ORA-12154 :TNS: Could not resolve service name"
实质都是一样的,要解决这样的问题需要我们弄情几个参数:
initsid.ora中的几个参数:
DB_NAME --- database name,即建数据库时所提供的名称。
GLOBAL_NAMES --- True/false,设定是否使用数据库域名。
DB_DOMAIN --- 数据库域名,如果GLOBAL_NAMES=True则要求提供这个参数。
SERVICE_NAMES --- service names list,服务名称,可以有多个。
INSTANCE_NAME --- instance name,和SERVICE_NAMES一样从817开始支持,即从817开始可以将数据库、实例和服务名称分开。默认instance_name的值为instance的SID,即环境变量ORACLE_SID所对应的值。在817以前没有instance_name参数时,不同的instance是以SID来区分的。按照oracle817以后的文档解释:SID是为了区别同一主机上各instance的共享内存,并不是instance的唯一区别标示,而instance_name则是区别各个instance的。
环境变量:
ORACLE_SID --- 在817以前没有instance_name参数时,不同的instance是以SID来区分的(详细说明见上面的initsid.ora参数解释)。
listener.ora中的几个参数:
GLOBAL_DBNAME --- 全局数据库名称,在分布式环境中唯一确定不同的数据库。它的值为initsid.ora中DB_NAME和DB_DOMAIN的组合,即GLOBAL_DBNAME=DB_NAME.DB_DOMAIN,其中DB_DOMAIN如果没有设此处也就不需要了。这个参数在分布式环境中建议明确指定。
SERVICE_NAME --- 服务名称,取initsid.ora中service_names list至一即可。
SID_NAME --- 对应环境变量ORACLE_SID的值。
INSTANCE_NAME ---对应初始化参数instance_name。
tnsnames.ora中的几个参数:
service_name --- 服务名称,取initsid.ora中service_names list至一即可。
我把一些PHP中类的常识性整理出来,让新手们更容易掌握PHP类,以便能快速看懂那些老大们写的程序,呵呵,不过比较少,希望老大们补充一下或者修正其中错误理解。
Q:PHP中的类可以有构造函数么?
A:可以,只要函数名和类名相同,这个函数将成为构造函数。在使用 new 操作符来创建一个类的实例时,该构造函数将会自动调用,因此,可以把一些初始化工作放在构造函数里完成。
Q:PHP中的类有析构函数么?
A:没有。当对象被销毁,使用 unset() 或者简单的脱离范围,析构函数都会自动调用。但 PHP 中没有析构函数。
 如:
unset($foo);
就销毁一个类对象$foo了。
Q:要如何继承一个类?
A:使用关键字 extends 来继承一个类,如:
class B extents A {
}
Q:在类的定义中如何引用自身?
A:使用 $this 来引用当前类自身,如:
$this->name = "Tom";
Q:在子类中如何使用父类?
A:使用 :: 操作符,且有两种方式,一种是直接用父类名,如:
     A::example();
一种是用 parent 关键字,如:
    parent::example();
建议采用 parent:: 来引用父类。
Q:我不想创建类的实例,能直接使用类中的函数或变量吗?
A:可以,采用 :: 操作符,如:
    B::example();
就可以执行B类中的函数example(),而并没有创建任何B类的对象,仅仅是作为一个类函数来调用,这对于功能模块归纳组织很有好处。
Q:PHP有多重继承么?//added by erquan
A:没有。子类不能同时从两个父类继承,即一个孩子不能同时有两个爸爸:)。子类必须依赖于一个且必须已存在的基类。

  在许多用户看来,一个Web网站的成败主要在于它所提供的内容和功能,殊不知支持这些内容和功能的Web服务器才是真正的幕后英雄。据统计,全世界已有500多万个网站。每个网站的后面都运行着一个Web服务器,那么什么是Web服务器?它是怎样工作的?......
  从C/S到Web
  最早的网络系统是简单的主机/终端系统,所有的应用程序都由主机完成,终端只是运行服务器上相应的程序。PC时代的到来,使计算机网络和计算机应用得到了很大的发展,由于PC价格的不断下降和性能的不断提高,面向终端的大型主机的应用领域越来越少。特别是网络操作系统如NetWare和Windows NT的兴起,以及网络数据库系统的出现,开辟了网络应用的新模式——C/S(Client/Server-客户/服务器)模式。C/S模式是一种两层结构的系统,第一层是在客户机上处理表示逻辑与业务逻辑,第二层则是通过网络运行的数据库等服务器系统。C/S模式将事务分开进行处理,实现了网络的分布式计算,很长时间里也帮助企业实现了局域网建设,完善了企业内部业务管理,提高了工作效率。然而C/S模式在系统的集成与维护、操作界面一致性、系统的扩展性等方面都存在明显的局限性,所以就象主机/终端式网络被C/S模式的网络系统所取代一样,在Internet/Intranet技术环境里,也会出现更新的系统模式。
  基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以TCP/IP协议为基础、以Web为核心的企业内部网,用户通过低成本、简单易用的客户浏览器就能随时随地到企业的Web站点上查阅自己所需的数据。浏览器客户端操作界面的一致性避免了C/S模式客户端程序的多样性,而服务器端的开放和基于标准的连接方案使企业很方便地通过Internet同外界联系;同时,Web信息动态的、交互式的发布方式从根本上改变了企业的服务质量,增加了企业的商业机会。

  图1 Web三层结构
  在三层结构的Web技术中,数据库不是直接向每个客户机提供服务,而是与Web服务器沟通,实现了对客户信息服务的动态性、实时性和交互性。这种功能是通过诸如CGI、ISAPI、NSAPI以及Java创建的服务器应用程序实现的。如图1所示。
  什么是Web服务器(Web Server)
  Web技术的独特之处是采用超链接和多媒体信息。Web服务器使用超文本标记语言(HTML-HyperText Marked Language)描述网络的资源,创建网页,以供Web浏览器阅读。HTML文档的特点是交互性。不管是一般文本还是图形,都能通过文挡中的链接连接到服务器上的其他文档,从而使客户快速地搜寻他们想要的资料。HTML网页还可提供表单供用户填写并通过服务器应用程序提交给数据库。这种数据库一般是支持多媒体数据类型的。
[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • jQuery+PHP+MySQL实现无限级联下拉框效果

    这篇文章主要介绍了jQuery+PHP+MySQL实现无限级联效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-02-21
  • php图片添加文字水印实现代码

    这篇文章主要为大家详细介绍了php图片添加文字水印实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-03-17
  • php有序列表或数组中删除指定的值的实现代码

    这篇文章主要介绍了php有序列表或数组中删除指定的值的实现代码,删除给定的值之后,得到一个新的有序列表,长度-1,下面是具体的实现方法...2021-08-22
  • PHP简单实现生成txt文件到指定目录的方法

    这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28