从 PHP 迁移到 ASP.NET(5)
点击次数:23 次 发布日期:2008-11-26 13:50:31 作者:源代码网
|
源代码网推荐 PHP 中的数组的功能与 Visual Basic .NET 中的数组的功能截然不同。PHP 中的数组实际上是关联数组,但是可以像索引或关联数组那样使用。而 Visual Basic .NET 中的数组是索引数组。Visual Basic .NET 不支持关联数组(但您可以自己创建它们,请参阅下面的“集合”)。其他 ASP.NET 语言支持这些类型的数组,但 Visual Basic .NET 并不支持,这可能给 PHP 开发人员提出了一个难题,因为他们并不习惯使用这种更常见的索引数组,并且可能会希望在 Visual Basic .NET 中创建关联数组模型。表 10 显示了 PHP 和 Visual Basic .NET 中的简单数组示例。 源代码网推荐 源代码网推荐 表 10:创建数组的示例 源代码网推荐 源代码网推荐 PHP Visual Basic .NET 源代码网推荐 $a = array (0,1, 2); Dim MySingleArraya() As Integer = 源代码网推荐 New Integer (2) {0,1,2} 源代码网推荐 源代码网推荐 源代码网推荐 与其他变量一样,Visual Basic .NET 数组中的变量也是使用 Dim 语句声明的。变量名后面带有一对或多对括号,表明它是数组而不是标量(包含单个值的变量)。 源代码网推荐 源代码网推荐 创建 Visual Basic .NET 数组时,还必须将其声明为保存特定类型的数据。如果指定的类型是 Object(作为 .NET 中所有对象类型的基础的普通类型),则此数组可以保存任何类型的数据,但是从数组中检索值时,必须将值转换为原来的类型。 源代码网推荐 源代码网推荐 Visual Basic .NET 数组可以是嵌套的数组,也可以是多维数组。Visual Basic .NET 中有许多与 PHP 相对应的用于处理数组的函数,但有一个例外。由于 Visual Basic .NET 不支持关联数组,因而不存在用于根据数组的“主键”来访问、索引或执行任何操作的函数。Visual Basic .NET 中不存在这样的“主键”。 源代码网推荐 源代码网推荐 虽然本文多次提到 Visual Basic .NET 不支持关联数组,但是可以创建集合来代替数组。集合与关联数组有些相似,可以使用集合来解决某些类似的问题。 源代码网推荐 源代码网推荐 在某些情况下,将项目存储在集合中要比存储在数组中更有效。 源代码网推荐 源代码网推荐 如果要处理一组小型的动态项目,则可以使用集合。要创建集合,只需如下面的示例代码所示声明并实例化一个 Collection: 源代码网推荐 源代码网推荐 Dim myCollection As New Collection() 源代码网推荐 源代码网推荐 然后,您可以使用 Add 方法向集合中添加成员。在此示例中,我们创建了四个字符串并将它们添加到集合中。您还可以选择添加一个唯一的 String 值作为集合成员的主键。该值作为 Add 方法的第二个参数传递给集合。 源代码网推荐 源代码网推荐 Dim w, x, y, z As String 源代码网推荐 w = "key1" 源代码网推荐 x = "key2" 源代码网推荐 y = "key3" 源代码网推荐 z = "key4" 源代码网推荐 myCollection.Add(w, "1") 源代码网推荐 myCollection.Add(x, "2") 源代码网推荐 myCollection.Add(y, "3") 源代码网推荐 myCollection.Add(z, "4") 源代码网推荐 源代码网推荐 虽然这看起来类似于在 PHP 中创建关联数组,但集合是一种截然不同的事物,因为它本身就是一个对象。对于转到 ASP 的 PHP 开发人员,我们建议在尝试在 Visual Basic .NET 中创建关联数组模型之前先了解一下 Microsoft 的 Visual Basic .NET Language Specification。 源代码网推荐 源代码网推荐 管理状态 源代码网推荐 任何 Web 应用程序中都很常见的一个任务就是管理状态,该任务通常是使用 Cookie 或应用程序状态管理构造(如 Session 变量)来完成的。Visual Basic .NET 具有与 PHP 类似的用于处理状态的方法。 源代码网推荐 源代码网推荐 设置和检索 Cookie 源代码网推荐 在这两种环境中设置 Cookie 都是比较繁琐的。表 11 显示了在这两种语言中编写然后读取 Cookie 的示例。 源代码网推荐 源代码网推荐 表 11:设置和检索 Cookie 源代码网推荐 源代码网推荐 PHP Visual Basic .NET 源代码网推荐 <?php 源代码网推荐 $value = "something from 源代码网推荐 源代码网推荐 somewhere"; 源代码网推荐 源代码网推荐 setcookie ("TestCookie", 源代码网推荐 源代码网推荐 $value,time()+3600); /* 源代码网推荐 源代码网推荐 expire in 1 hour */ 源代码网推荐 源代码网推荐 ?> 源代码网推荐 源代码网推荐 and to retive the set cookie 源代码网推荐 源代码网推荐 <? 源代码网推荐 源代码网推荐 echo $_COOKIE["TestCookie"]; 源代码网推荐 源代码网推荐 ?> 源代码网推荐 Dim value as string = "something from 源代码网推荐 somewhere" 源代码网推荐 源代码网推荐 Dim myCookie As New HttpCookie = New 源代码网推荐 源代码网推荐 HttpCookie("Something from 源代码网推荐 源代码网推荐 somewhereTestCookie") 源代码网推荐 源代码网推荐 Dim now as DateTime = DateTime.Now 源代码网推荐 源代码网推荐 myCookie.Value = now.ToString()value 源代码网推荐 源代码网推荐 myCookie.Expires = now.AddHour(1) 源代码网推荐 源代码网推荐 Response.Cookies.Add(myCookie) 源代码网推荐 源代码网推荐 "and to retrieve the set cookie 源代码网推荐 源代码网推荐 Response.Write(Request.Cookies["What we 源代码网推荐 源代码网推荐 setTestCookie"}.Value} 源代码网推荐 源代码网推荐 源代码网推荐 设置和检索 Session 变量 源代码网推荐 ASP.NET 中的 Session 变量与 PHP 中的 Session 变量非常类似。这两种环境中的 Session 变量都为确保 Web 应用程序访问中的一致性提供了相应处理和 Cookie 操作。 源代码网推荐 源代码网推荐 最重要的一个差别是,当从 ASP.NET 的 Session 对象中检索值时,该值将作为普通的 System.Object 类型返回,而这种类型可以保存任何类型的数据。要使用该值,必须先将其重新转换为原来的基本类型。表 12 显示了一些 Session 变量的使用示例。 源代码网推荐 源代码网推荐 表 12:Session 变量的使用 源代码网推荐 源代码网推荐 PHP Visual Basic .NET 源代码网推荐 <?PHP 源代码网推荐 session_start(); 源代码网推荐 源代码网推荐 session_register("today"); 源代码网推荐 源代码网推荐 $today = getdate(); 源代码网推荐 源代码网推荐 ?> 源代码网推荐 源代码网推荐 源代码网推荐 <?= $today ?> 源代码网推荐 Session("Today") = DateTime.Now 源代码网推荐 Dim today As Date 源代码网推荐 源代码网推荐 today = CDate(Session("Today")) 源代码网推荐 源代码网推荐 Response.Write(today) 源代码网推荐 源代码网推荐 Response.write (session("Today")) 源代码网推荐 源代码网推荐 源代码网推荐 ASP.NET 还提供了另一种形式的状态管理,即“应用程序状态”,它与 Session 变量类似,但只是在应用程序的生存期中保持一致。这使您可以存储各种内容,例如配置信息或数据库连接字符串。这些内容在应用程序运行期间不会发生变化。 源代码网推荐 源代码网推荐 有关此主题的详细信息,请参阅《.NET Framework Development Guide》中的 Application State 一节。 源代码网推荐 源代码网推荐 正则表达式 源代码网推荐 ASP.NET 支持其他正则表达式实现(例如 Perl 和 awk 中的正则表达式)的大多数常见功能。这实际上是为了保持与 Perl 5 正则表达式兼容。ASP.NET 还支持其他正则表达式实现中未提供的正则表达式功能,例如从右向左匹配以及实时编译。由于 ASP.NET 与 Perl 正则表达式兼容,并且大多数 PHP 开发人员都使用了 Perl 兼容的正则表达式,因而通常无须将语法从一种形式转换为另一种形式。有关 .NET 正则表达式支持的详细信息,请参阅 .NET Framework Regular Expressions。 源代码网推荐 源代码网推荐 异常处理 源代码网推荐 ASP.NET 框架通过一种人们所熟悉的语言构造 Try/Catch 提供了结构化的异常处理,从而能够捕获代码中可能出现的异常。PHP 没有提供此功能,但 PHP 5 中将添加它。 源代码网推荐 源代码网推荐 下面的示例说明了如何在 Visual Basic .NET 中进行异常处理: 源代码网推荐 源代码网推荐 Try 源代码网推荐 " 此处是可能导致错误的代码 源代码网推荐 Catch e As ExceptionType 源代码网推荐 " 用于处理错误的代码 源代码网推荐 " 可选:可在此处放置更多 Catch 块 源代码网推荐 Finally 源代码网推荐 " 始终执行的代码 源代码网推荐 End Try 源代码网推荐 源代码网推荐 要注意的是,Try 块可以包含一个或多个 Catch 块,或包含一个 Finally 块,也可以同时包含两者。也就是说,如果您知道无法更正错误,但仍需要清除某些对象而不管是否发生错误,则可以使用不包含 Catch 语句的 Try...Finally 块。 源代码网推荐 源代码网推荐 查询数据库 源代码网推荐 在 PHP 中,通常可以通过两种常见方法访问数据库:使用数据库的特定扩展名或使用独立于数据库的 PEAR DB 库。 源代码网推荐 源代码网推荐 在 ASP.NET 中,可以通过一组称为 ADO.NET 的对象来访问数据库,这些对象与 PEAR DB 库的功能基本相同。数据库查询实际上是通过一组连接、命令、参数和数据适配器对象完成的。其中的每个对象都有多个版本,具体情况取决于所访问的数据库的类型。例如,有一组对象用于具有 OLE-DB 驱动程序的数据库(例如 Microsoft Access),还有一组对象用于具有 ODBC 驱动程序而没有 OLE-DB 驱动程序的数据库。针对 Oracle 和 Microsoft SQL Server 也有专门的数据提供者,它们已经过优化,可以分别为每种特定的数据库提供高性能的访问。某些第三方还提供了其他数据库支持,例如 MySQL。本节中的示例将使用 SQL Server 对象,因为它是 ASP.NET 最常用的数据库。 源代码网推荐 源代码网推荐 System.Data、System.Data.SqlClient 和 System.Data.oledb 是用于在 ADO.NET 中定义数据库访问的命名空间。要使页面能够访问这些类,您需要将 System.Data 和 System.Data.SqlClient 命名空间导入到页面中。 源代码网推荐 源代码网推荐 <%@ Import Namespace="System.Data" %> 源代码网推荐 <%@ Import Namespace="System.Data.SqlClient" %> 源代码网推荐 源代码网推荐 图 13 显示了在这两种语言中执行查询的示例。在 PHP 中,我们显示了一个使用 PEAR 的连接,PEAR 不仅是用于连接 DB 的最常用方法之一,但还是与 ADO.NET 最为类似的方法。 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
