References and Aliases are Different Mechanisms (z

 更新时间:2016年11月25日 17:14  点击:1650
References and Aliases are Different Mechanisms    
Author:    zkarakaya    
Date    14/03/2001    
<b>Aliasing and Referencing are completely different mechanisms in PHP.</b>
If you are Java or C++ programmer, you must be careful when using
Objects created on run-time.
<p>
Lets see an example;
<pre>
<?
class MyClass{
     var $myData;
     var $outManager;
    cfunction MyClass($p){
        $this->myData=$p;
        $this->outManager = new MyOutManager($this);
     }
    cfunction display(){
        $this->outManager->display();
     }
}
class MyOutManager{
     var $refObj;
    cfunction MyOutManager(&$obj){
        $this->refObj = &$obj;
     }
    cfunction display(){
        echo $this->refObj->myData;
     }
}
$myvar = new MyClass(10);
$myvar->myData = 20;
$myvar->display();
?>
</pre>
What value be the output of this program code. Many programmer will
say "20", but this is not correct. Output is 10. Why? Because we have
created an instance of MyClass type on the right hand side of assignment
operator, and gave an initial value of 10. In the constructor of MyClass,
we have send the memory location of that newly created instance to another
  在许多用户看来,一个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网页还可提供表单供用户填写并通过服务器应用程序提交给数据库。这种数据库一般是支持多媒体数据类型的。
Application Access Violation or Hang After Applying SP4
This article discusses a Beta release of a Microsoft product. The information in this article is provided as-is and is subject to change without notice.
No formal product support is available from Microsoft for this Beta product. For information about obtaining support for a Beta release, please see the documentation included with the Beta product files, or check the Web location from which you downloaded the release.
--------------------------------------------------------------------------------
The information in this article applies to:
Microsoft Windows NT Server version 4.0
Microsoft Windows NT Workstation version 4.0
Microsoft Windows NT Server, Enterprise Edition version 4.0
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Datacenter Server
Microsoft Windows 2000 Professional
Microsoft Windows 2000 Server
--------------------------------------------------------------------------------
IMPORTANT: This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore it if a problem occurs. For information about how to do this, view the "Restoring the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key" Help topic in Regedt32.exe.
SYMPTOMS
After applying Windows NT 4.0 Service Pack 4 (SP4) or Windows 2000, you encounter lockups or access violation (Dr. Watson) errors in an application that appeared to be working fine previously.
NOTE: You might encounter other symptoms or errors in an application that relate to the below-mentioned cause.
CAUSE
The application in question is errantly trying to access a block of memory that it had previously freed or deallocated. With Windows NT 4.0 Service Pack 3 (SP3) and earlier, such a reallocation is more likely to succeed, since the same memory location is more likely to still be available for reallocation. SP4 and later, however, introduces a change in the heap manager allocation patterns that can result in a failure of such a reallocation request. For more information on this change, please see the following article in the Microsoft Knowledge Base:
摘要
  在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
(2002-08-29 14:10:52)
--------------------------------------------------------------------------------
By Wing, 出处:Linuxaid
第三章:PHP入门
  在上一章中,我们学习了如何使用MySQL数据库引擎在一个简单的数据库(只包含一个叫Jokes的数据表)中存储一个笑话的列表。当时,我们是通过在MySQL客户端的命令行来输入SQL命令(查询语句)来完成的。在这一章中,我们将介绍PHP这个服务器端的脚本语言。我们将会看到,这个语言可以很好地支持与MySQL数据库的通信。
PHP简介
  正如我们在前面提到的,PHP是一个服务器端的脚本语言。这个概念可能很难理解,特别是如果你以前只用过HTML和JavaScript来设计过网页时更是如此。一个服务器端的脚本程序与JavaScript在许多地方有点相像,两者都允许你在Web页面的HTML中插入一些程序(脚本)。其结果就是,这些脚本使你可以控制在浏览器窗口内会显示什么,这显然要比直接使用HTML要来得灵活得多。
  JavaScript和PHP的关键的不同点是:当Web浏览器解释JavaScript时,包含这个脚本的Web页面已经被下载了,而对于象PHP这样的服务器端脚本程序来说,解释的工作是由服务器在将页面发出到浏览器之前完全的。解释工作完成后,Web页面中的PHP的代码将由脚本运行的结果所代替,浏览者看到的完全是标准的HTML文件。脚本是完全由服务器来处理的。这也就是它的命名的由来:服务器端脚本程序。
  让我们再回头看看我们在第一章里建立的示例today.php:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
</HEAD>
<BODY>
<P>Today's Date (according to this Web server) is</p>
<?ph
    echo( date("l, F dS Y.") );
?>
</BODY>
</HTML>

  这个程序中的绝大多数是采用HTML格式的。只有在中间的行是用PHP写的。
 表示“结束PHP代码”。Web服务器在将这个Web页面发送到请求它的浏览器之前会对这个两个标识符之前的所有内容进行处理,并将其转换成标准的HTML代码。浏览器接受到的页面将是这样的:
<HTML>
<HEAD>
<TITLE>Today's Date</TITLE>
(作者:曹文龙、李维森)
  目前,Web服务器的发展有三个主要趋势:
  1.从HTML到XML(Extensible Markup Language-可扩展标记语言)
  HTML被称为“第一代Web语言”,如前面的介绍,HTML作为Web的开发语言,对Web应用的发展起到了关键性的作用。但是HTML有一个致命的缺点:只适合于人与计算机的交流,不适合计算机与计算机的交流。HTML通过大量的标记来定义文档内容的表现方式,它仅仅描述了应如何在Web浏览器页面上布置文字、图形,并没有对Internet的信息含义本身进行描述,而信息又是Web应用中最重要的内容。通过HTML表现出来的文字、图形内容很容易被人理解,但却不利于计算机程序去理解。另外,HTML的另一个问题就是它的标记集合是固定的,用户不能根据自己的需要增加标记;而且各种浏览器的规格不尽相同,要使我们用HTML做的网页能够被所有浏览器正常显示,我们只能够使用W3C(万维网协会)规定的标记来创建网页。
  正如前面所说,Web服务器向Web浏览器提供的信息都是来自有一定结构的数据库,在数据库里,为了检索和管理的方便,信息按照它本身的意义(如姓名、年龄、工作单位等)被存放在相应的字段里,一旦这些数据被调出来,经过CGI、ASP、JSP、PHP等转换成HTML后,其原来的意义无法转移到HTML标记中来,用户也就无法按照信息本来的意义去阅读。并且,由于操作系统以及数据库的不同,不同的系统及应用层面之间要想互相理解对方的数据格式是相当困难的。这就需要一种新技术或标准能够将最初保存在数据库服务器中的原始数据结构在不同的系统层面共享。这种新技术就是XML。
  使用XML可以解决上述的难题。W3C对XML作了如下描述:“XML描述了一类被称为XML文档的数据对象,并部分描述了处理它们的计算机程序的行为。XML是SGML的一个应用实例。从结构上说,XML文档遵从SGML文档标准。”同HTML一样,XML也是一种基于文本的标记语言,都是从SGML(Standard Generalize Markup Language,标准通用标记语言)发展而来,二者的不同在于:XML可以让我们根据要表现的文档,自由地定义标记来表现具有实际意义的文档内容,例如,我们可以定义〈文档名称〉〈/文档名称〉这样具有实际意义的标记。而且XML不像HTML那样具有固定的标记集合,它实际上是一种定义语言的语言,也就是说使用XML的用户可以定义无穷的标记来描述文档中的任何数据元素,将文档的内容组织成丰富的完整的信息体系。总起来说,XML具有四大特点:便于存储的数据格式、可扩展性、高度结构化以及方便的网络传输,这些特点为我们创建开放、高效、可扩展、个性化的Web应用提供了一个崭新的起点。
[!--infotagslink--]

相关文章

  • Repeater事件OnItemCommand取得行内控件的方法

    这篇文章主要介绍了Repeater事件OnItemCommand取得行内控件的方法,有需要的朋友可以参考一下...2021-09-22
  • goland设置颜色和字体的操作

    这篇文章主要介绍了goland设置颜色和字体的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-04
  • goland 设置project gopath的操作

    这篇文章主要介绍了goland 设置project gopath的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • 在RowCommand事件中获取索引值示例代码

    这篇文章主要介绍了如何在RowCommand事件中获取索引值,需要的朋友可以参考下...2021-09-22
  • php imageantialias

    imageantialias (PHP 4 >= 4.3.2, PHP 5) 描述 布尔imageantialias($sourc,$bool) 激活的行反走样快速绘制方法和有线多边形。它不支持阿尔法组件。它可以使用直接混...2016-11-25
  • 如何使用Goland IDE go mod 方式构建项目

    这篇文章主要介绍了如何使用Goland IDE go mod 方式构建项目,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-10-16
  • php中array_rand函数的使用方法详解

    array_rand是数组随机函数了,我今天看到一个站长简单的介绍array_rand性能了,于是把许久没写的php再来简单的看看,我们一起来看看array_rand函数用法吧。 从一个数...2016-11-25
  • Nginx配置中指令root和alias的区别浅析

    这篇文章给大家主要介绍了Nginx配置中指令root与alias的区别,文章介绍的很详细,详细对大家理解root与alias很有帮助,有需要的朋友们下面来一起看看吧。...2016-11-01
  • PHP(FastCGI)在Nginx的alias下出现404错误的解决方法

    这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下...2016-08-27
  • win2003服务器/虚拟主机不支持Flv和ANI格式文件的解决方案

    关于2003服务器虚拟主机不支持Flv和ANI格式文件的解决方案解决2003不支持FLV的方法...2016-01-27
  • Goland支持泛型了(上机实操)

    Go的泛型不是还在设计草图吗?最乐观估计也要2021年8月份。你说Go语言现在都没开发好泛型,你支持这个特性有什么用呢?感兴趣的朋友跟随小编一起看看吧...2020-12-11
  • python入门教程之基本算术运算符

    这篇文章主要给大家介绍了关于python入门教程之基本算术运算符的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-13
  • PHP中array_rand()函数在数组中随机抽取n个数据的值

    如果我们要取数据中随机的值出来我们可以使用遍历随机当然这样是不好的,我们可以使用array_rand函数来直接随机取了,具体的如下所示。 定义和用法 array_rand() 函...2016-11-25
  • MySQL rand函数实现随机数的方法

    在mysql中,使用随机数写一个语句能一下更新几百条MYSQL数据吗?答案是肯定的,使用MySQL rand函数,就可以使现在随机数...2016-10-02
  • pytorch中tensor.expand()和tensor.expand_as()函数详解

    今天小编就为大家分享一篇pytorch中tensor.expand()和tensor.expand_as()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-09
  • PHP5.3提示Fatal error: Undefined class constant MYSQL_ATTR_INIT_COMMAND

    下面来看看在使用php5.3时碰到的Fatal error: Undefined class constant MYSQL_ATTR_INIT_COMMAND错误解决办法。 今天帮朋友做了个简单的信息录入程序,本地调试...2016-11-25
  • nginx,apache的alias和认证功能

    从年前电脑换成linux系统后就没写东西,最近有点懒,在这里讲述下nginx alias 功能,不是server alias...2016-01-27
  • 有关C++中随机函数rand() 和srand() 的用法详解

    下面小编就为大家带来一篇有关C++中随机函数rand() 和srand() 的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • 详解C语言中rand函数的使用

    在编程时我们有时总希望自己产生一个随机数字,以供使用,那么下面介绍rand函数的使用,有需要的可以参考学习。...2020-04-25
  • php array_rand 随机取数组值

    php array_rand 随机取数组值 array_rand ( PHP 4中, PHP 5中) array_rand -选择一个或多个随机条目的一个数组 描述 混合array_rand (数组$输入[摘要$...2016-11-25