分享
 
 
 

从 PHP 迁移到 ASP.NET(3)

王朝php·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

数组

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 最为类似的方法。

表 13:执行查询

PHP Visual Basic .NET

<?php

//connect

require_once('DB.PHP');

$db=DB::connect

("mysql://mydbvie

w:user@localhost/mydb");

if (DB::iserror($db)) {

die($db->getMessage());

$sql = "select * from mytable";

$q= $db->query($sql);

if (DB::iserror($q)) {

die($q->getMessage());

}

<tr>

<td><?= $row[0] ?></td>

<td><?= $row[1] ?></td>

<td><?= $row[2] ?></td>

</tr&g

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有