PHP中ADODB类详解

虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API)。为了填补这个缺憾,因此才有 ADODB 的出现。一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易。

目前 ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC (其中 PostgreSQL、Informix、Sybase 的driver 是由自由软件社群发展之后贡献出来的)。

使用 ADODB 最大的优点之一是:不管后端数据库如何,存取数据库的方式都是一致的,开发设计人员不必为了某一套数据库,而必须再学习另一套不同的存取方法,这大大减轻开发人员的知识负担,过去的知识往后仍可继续使用,转移数据库平台时,程序代码也不必做太大的更动。

其实 ADODB 这样的发展理念,并不是首创的,DBI 比 ADODB 出现得更早,它提供 Perl 存取数据库时,使用一致的 API 呼叫接口。相信用过 Perl + DBI 的朋友,再来用 ADODB 时,会有一种似曾相识的感觉。

另外,ADODB 对用过 ASP 的人而言,应该不陌生,这类朋友对 ADODB 应该很容易接受。

我们来看一下,ADODB 的简单用法:

<?php

// 引入 adodb 的 inc 档,才能呼叫 adodb 提供的函式

include('adodb/adodb.inc.php');

// 选择连接的数据库种类,以建立联机对象,

// 一旦对象建立,即可使用其成员函式来处理数据库。

// 以下 $conn 即此一物件(object)

$conn = &ADONewConnection('mysql');

// 要不要显示侦错讯息,false 不要,true 要。

// $conn->debug = false;

$conn->debug = true;

// 连接数据库

// 用法:$conn->Connect('主机', '使用者', '密码', '数据库');

// 用例:

$conn->Connect('localhost', 'piza', 'ooo123', 'test');

// 若欲采用持续性连接,上式可换用 PConnect:

// $conn->PConnect('localhost', 'piza', 'ooo123', 'test');

// 设定 sql 命令

$sql = "insert into t values ('abcde', 18)";

// 执行 sql 命令

$rs = $conn->Execute($sql);

// 检查执行结果,若 $rs == false,则呼叫 $conn 对象的成员函式 ErrorMsg()

if (!$rs) print $conn->ErrorMsg(); else print "OK!";

?>

结果如下:

---------------------------------------------

(mysql): insert into t values ("abcde",18)

---------------------------------------------

OK!

若把侦错关掉,即 $conn->debug=false,则结果如下:

OK!

以下,逐步为各位介绍:使用 ADODB 的重点方法。

2. 安装 
ADODB 的首页在:http://php.weblogs.com/ADOdb,目前(2002/10/24)最新版是:2.42 版,可至 ADODB 下载或至台南县教网中心 FTP 下载。

安装 ADODB 的方法超极简单,只要下载、解压、放入适当位置,即可完成 ! 如下所示:

1. 下载:

$ ncftp ftp.tnc.edu.tw

cd sysop/ADODB

get adodb242.tgz

2. 解压:

假设我把 adodb242.tgz 放入 /var/www/html 中

$ cp adodb242.tgz /var/www/html

$ tar xvzf adodb242.tgz

如下所示:

adodb/adodb-cryptsession.php

adodb/adodb-csvlib.inc.php

adodb/adodb-errorhandler.inc.php

adodb/adodb-errorpear.inc.php

adodb/adodb-lib.inc.php

adodb/adodb-pager.inc.php

....以下省略....

现在,您在 /var/www/html/adodb 已安装好 ADODB 了。

3. 引入 ADODB 
一旦安装好 ADODB,使用前,应把 ADODB 相关的含入文件引入您的程序中。adodb 目录放在任何位置无所谓,只要能指向正确路径文件名即可。一般而言,您的程序代码只须引入 adodb.inc.php。

作法如下:

在您的 PHP 程序中:

include('路径/adodb/adodb.inc.php');

include_once('路径/adodb/adodb.inc.php');

例:

若您的程序和 adodb 在同一目录下:

.

..

adodb/

something.php*

则:

include('adodb/adodb.inc.php');

即可。

若位置是在某一个目录 somedir 中:

.

..

adodb

somedir/something.php

则必须使用:

include('../adodb/adodb.inc.php');

除了 adodb.inc.php 这个含入档,ADODB 还提供许多 adodb-*.inc.php 的含入档,这些多半是为驱动某些数据库的特殊用法而设的。

若是引入 adodb-session.php 则可让您将 session 存入数据库中来维护运用。

若是引入 adodb-pager.inc.php,可方便您做分页显示。

若是引入 adodb-errorhandler.inc.php,可让您自订错误处理讯息。

若是含入 adodb-pear.inc.php,可让您使用 PHP4 的 PEAR DB 语法来使用 ADODB。此时,尚可使用 DSN 连接数据库的字符串设定。如 $dsn="mysql://piza:ooo123@localhost/test";

若是引入 tohtml.inc.php,可帮您在程序代码中,方便将取出的记录,转成 HTML 的表格(table)来显示。

若是引入 toexport.inc.php,可让您方便地输出 CSV 档或以 tab 分隔字段的数据文件。

若是引入 rsfilter.inc.php,可让您在使用记录之前,预做过滤处理。

若是引入 pivottable.inc.php,可让您使用 pivot table 功能(俗称 cross-tabulations)。

注意 ! adodb.inc.php 是一定要引入的,其它,则视您要使用那一个功能,再引入该含入档即可。

4. 选用数据库种类,建立联机对象 
由于 ADODB 使用对象导向的作法,因此您在引入档之后,接着请视您后端数据库的种类,建立一个联机对象。作法如下:

以 MySQL 数据库为例:

$conn = &ADONewConnection('mysql');

注:NewADOConnection 和 ADONewConnection 是一样的,二者皆可使用。

上例中的 'mysql' 是指数据库的 drvier 的种类,ADODB 会据此呼叫对应的数据库 driver。

其它常用的 driver 有:access、ado、ado_access、ado_mssql、db2、vfp、ibase、borland_ibase、informix、imformix72、mssql、oci8、odbc、postgres、postgres64、postgres7、sqlanywhere、sybase....等等。

我们称建立的对象 $conn 为一 ADOConnection 对象,它代表与数据库的连接事务,皆透过这个对象来处理。ADOConnection 对象会提供许多处理的方法,以对象导向的说法,这些方法称为成员函式,这是外界存取此一对象的接口。

一旦联机对象建立之后,就有许多对象函式可供您使唤啦 ! 请看下一节的介绍。

5. 侦错模式 
程序开发的过程,为了方便查出出现问题可能的地方,通常我们会打开侦错模式,俟程序功能确实稳定之后,再将它关闭。ADODB 提供侦错模式,存取数据库时,能显示其运作方式。

打开侦错模式,使用法:

$conn->debug=true

关闭侦错模式,使用法:

$conn->debug=false

6. 连接数据库 
接着,使用 $conn 联机对象的 Connect 或 PConnect 函式来连接特定的数据库,此时必须提供 DSN (Data Source Names)相关数据,DSN 可能包括:主机名称、数据库使用者、数据库密码、数据库名称。不同的数据库种类,DSN 可能可以省略其中若干项。以 MySQL 而言,则上述四者都要提供。

该函式会传回 true 或 false,用以表示是否连接成功。

用例:

// 格式:$conn->Connect('主机', '使用者', '密码', '数据库');

$conn->Connect('localhost', 'piza', 'ooo123', 'test');

或者,采持续性连接:

// 格式:$conn->PConnect('主机', '使用者', '密码', '数据库');

$conn->PConnect('localhost', 'piza', 'ooo123', 'test');

若欲探查是否有联机成功,可用一个变量来接取传回值:

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

$cok = $conn->Connect($mch, $user, $pwd, $database);

或者,采持续性连接:

$cok = $conn->PConnect($mch, $user, $pwd, $database);

if (!$cok) { echo "无法连接数据库 $database"; exit; }

7. 设定 sql 命令语法、执行 sql 命令 
接下来,您就可以设计您要执行的 sql 命令语法,然后付诸执行。

$sql = "这里放 SQL 的命令语法";

$rs = $conn->Execute($sql);

其中,$rs 为回传的结果,若 $rs == false,则表示执行失败,您必须仔细检查一下。

您不一定要把命令语法放在 $sql 变量中,也可以直接放入 Execute( ) 括号中。若命令较短无妨,若命令较长,我建议您还是用一个变量 $sql 来设定命令字符串吧 !

下一节开始,为各位介绍 SQL 的基本命令,如:Insert、Select、Update、Delete 等等的用法。

8. 插入记录(Insert) 
Insert 的用法如下:

// $name 为字符串,$year 为数字

$name='abcde';

$year=18;

// 插入一笔记录,命令的大小写无妨,但数据表 t 及变量则大小写有分别 !

$sql = "INSERT INTO t VALUES ('$name', $year)";

// $sql = "insert into t values ('$name', $year)"; 亦可。

// 执行

$rs = $conn->Execute($sql);

// 检查执行结果,进行错误处理;若正常,则继续其它动作....

if (!$rs) print $conn->ErrorMsg();

....以下省略....

ErrorMsg() 是错误显示的函式,它会取出错误讯息,并显示出来。

另外,ADODB 提供一种 记录集(RecordSet) 函式 GetInsertSQL(),可帮您产生 Insert 的语法。

例子如下:

<?php

// 引入 ADODB

include('adodb/adodb.inc.php');

// 建立联机对象

$conn = &ADONewConnection('mysql');

// 侦错

$conn->debug=true;

// DSN 四项基本数据设定

$mch="localhost";

$user="root";

$pwd="jack168";

$database="test";

// 连接至数据库 test

$conn->PConnect($mch, $user, $pwd, $database);

// 产生一笔空记录

$sql = "select * from t where year=-1";

$rs = $conn->Execute($sql);

// 用一个空数组来装要更新的数据

$r = array();

$r['name']='john';

$r['year']=28;

// 用 GetInsertSQL 函式来制作一个完整的 sql 命令,此 sql 命令放在 $insertSQL 中

$insertSQL = $conn->GetInsertSQL($rs, $r);

// 执行插入

$conn->Execute($insertSQL);

$conn->Close();

?>

侦错讯息如下:

-----------------------------------------------------------

(mysql): select * from t where year=-1

-----------------------------------------------------------

(mysql): INSERT INTO t ( name, year ) VALUES ( 'john', 28 )

-----------------------------------------------------------

9. 取出记录(Select) 
Select 的用法如下:

<?php

// 引入 ADODB

include('adodb/adodb.inc.php');

// 建立联机对象

$conn = &ADONewConnection('mysql');

// 不侦错

$conn->debug=false;

// DSN 四项基本数据设定

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

// 连接至数据库 test

$conn->PConnect($mch, $user, $pwd, $database);

// 执行 Select 由表格 t 取出数据,

// 它会传回一个 ADORecordSet 记录集对象 $rs (RecordSet)

// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录(row 或称 record),

// 该记录的所有字段数据的内容,存放在 fields 这个数组之中

// ,以数字为索引,第一个由 0 开始

$rs = &$conn->Execute('select * from t');

// 若 $rs 为 false,则秀出错误讯息

if (!$rs) {

print $conn->ErrorMsg();

} else {

// 当尚未到达 记录集 $rs 的结束位置(EOF:End Of File)时,(即:还有记录尚未取出时)

while (!$rs->EOF) {

// 秀出所有字段,$FieldCount() 会传回字段总数

for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) {

print $rs->fields[$i] . " ";

}

// 移至下一笔记录

$rs->MoveNext();

// 换列

echo "<br>\n";

}

}

$rs->Close(); // 可不用

$conn->Close(); // 可不用

?>

$rs->fields[] 数组是由 PHP 的数据库扩展功能产生的,某些扩展功能并不支持使用字段名称当作索引。

若欲使用名称当作索引,也就是俗称的 hash 或 associative arrays,则需使用全域变量 $ADODB_FETCH_MODE 加以指定。

以下设定:使用数字索引 $ADODB_FETCH_MODE= ADODB_FETCH_NUM;

以下设定:使用名称索引 $ADODB_FETCH_MODE= ADODB_FETCH_ASSOC;

下面是使用名称索引的例子:

<?php

// 引入 ADODB

include('adodb/adodb.inc.php');

// 建立联机对象

$conn = &ADONewConnection('mysql');

// 不侦错

$conn->debug=false;

// DSN 四项基本数据设定

$mch="localhost";

$user="root";

$pwd="jack168";

$database="test";

// 连接至数据库 test

$conn->PConnect($mch, $user, $pwd, $database);

// 执行 sql 之前,指定使用名称索引

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

// 执行 Select,它会传回一个 ADORecordSet 记录集对象 $rs

// 实际上 $rs 是一个 cursor 指标,它拥有目前的记录内容,

// 该记录存放在 fields 这个数组之中

$rs = &$conn->Execute('select * from t');

// 若 $rs 为 false,则秀出错误讯息

if (!$rs) {

print $conn->ErrorMsg();

} else {

// 当尚未到达记录集结束位置(EOF)时,

while (!$rs->EOF) {

// 秀出所有字段

print $rs->fields['name'] . " " . $rs->fields['year'];

// 移至下一笔记录

$rs->MoveNext();

// 换列

echo "<br>\n";

}

}

$rs->Close(); // 可不用

$conn->Close(); // 可不用

?>

10. 取出记录(使用 FetchRow) 
这里示范 FetchRow 的用法:

$sql = "select * from t";

$rs = $conn->Execute($sql);

if ($rs) {

while( $ar = $rs->FetchRow() ) {

print $ar['name'] ." " . $ar['year'];

print "<br>\n";

}

}

FetchRow() 会将取出的记录传回,您可用一个 array 来接取。

注意 ! 使用 FetchRow() 就不必再用 MoveNext(),FetchRow 内部会自动完成移至下一笔记录的动作。

11. 更新记录(Update) 
您可以用传统的方式:

$sql ="UPDATE t SET name='john', year=28 WHERE year=18";

$conn->Execute($sql);

也可以用以下这种方式:

<?php

// 引入 ADODB

include('adodb/adodb.inc.php');

// 建立联机对象

$conn = &ADONewConnection('mysql');

// 侦错

$conn->debug=true;

// DSN 四项基本数据设定

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

// 连接至数据库 test

$conn->PConnect($mch, $user, $pwd, $database);

// 选择要更新的那一笔记录

$sql = "select * from t where year=18";

$rs = $conn->Execute($sql);

// 用一个空数组来装要更新的数据

$r = array();

$r['name']='john';

$r['year']=28;

// 用 GetUpdateSQL 函式来制作一个完整的 sql 命令,此 sql 命令放在 $updateSQL 中

$updateSQL = $conn->GetUpdateSQL($rs, $r);

// 执行更新

$conn->Execute($updateSQL);

$conn->Close();

?>

侦错讯息如下:

-------------------------------------------------------------

(mysql): select * from t where year=18

-------------------------------------------------------------

(mysql): UPDATE t SET name = 'john', year = 28 WHERE year=18

-------------------------------------------------------------

12. 删除记录(Delete) 
删除记录很简单,采传统方式即可: $sql = "DELETE FROM t WHERE year=18";

$rs = $conn->Execute($sql);

13. 使用字段对象(Field Objects) 
这里示范字段对象 FetchField 的用法,用以取得字段名称及字段型态:

$sql = "select * from t";

$rs = &$conn->Execute($sql);

if ($rs) {

while (!$rs->EOF) {

// 取出第二个字段

$f = $rs->FetchField(1);

// 印出字段名称 及 字段型态

print $f->name . ":" . $f->type;

$rs->MoveNext();

print "<br>\n";

}

}

另外,ADODB 提供一个 RecordSet 函式 MetaType(),可将原始的字段型态转成一般型态代码:

C : 字符

X : text

B : blob

D : 日期

T : timestamp

L : 布尔值或位

I : 整数

N : 数字型态,包括:自动增加、数值、浮点数、实数及整数

R : serial、自动增加

用例:

$f = $rs->FetchField(1);

// 印出字段名称 及 字段型态的代码

print $f->name . ":" . $rs->MetaType($f->type);

14. 简单分页(Pager) 
ADODB 提供一种简单分页显示记录的方法,使用前,要将 adodb-pager.inc.php 引入。

<?php

include('adodb/adodb.inc.php');

// 引入分页功能

include('adodb/adodb-pager.inc.php');

// 启动 session

session_start();

$db = ADONewConnection('mysql');

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

$db->Connect($mch, $user, $pwd, $database);

$sql = "select * from t";

// 产生 pager 对象

$pager = new ADODB_Pager($db, $sql);

// 每一页秀 5 笔记录

$pager->Render($rows_per_page=5);

?>

结果如下:

Figure 1. 简单分页功能

每页显示记录的数目是由 Render() 来控制的,若没有传入指定的 row 数给 Render(),默认值每页秀 10 笔。

另外,字段名称也可以改变,如下示范:

<?php

include('adodb/adodb.inc.php');

// 引入分页功能

include('adodb/adodb-pager.inc.php');

// 启动 session

session_start();

$db = ADONewConnection('mysql');

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

$db->Connect($mch, $user, $pwd, $database);

$sql = "select name as '姓名', year as '年纪' from t";

// 产生 pager 对象

$pager = new ADODB_Pager($db, $sql);

// 每一页秀 5 笔记录

$pager->Render($rows_per_page=5);

?>

结果如下:

Figure 2. 改变字段名称

15. 输出 CSV 档 
ADODB 提供输出 CSV 档的方法,使用前,要将 toexport.inc.php 引入。

<?php

include('adodb/adodb.inc.php');

// 引入输出 CSV 文件功能

include('adodb/toexport.inc.php');

$db = ADONewConnection('mysql');

$mch="localhost";

$user="piza";

$pwd="ooo123";

$database="test";

$db->Connect($mch, $user, $pwd, $database);

$sql = "select name as '姓名', year as '年纪' from t";

$rs = $db->Execute($sql);

// 秀出 CSV 格式

print rs2csv($rs);

?>

结果如下:

姓名,年纪

abcde,45

yyy,20

ppp,34

mmm,13

hhh,41

rrr,65

kkk,29

miso,154

sss,89

abc,18

abcde,0

uyt,58

john,28

也可用 tab 分隔字段,使用 rs2tab 方法如下:

print rs2tab($rs, false);

注: false 表示不显示字段名称

结果如下:

abcde 45

yyy 20

ppp 34

mmm 13

hhh 41

rrr 65

kkk 29

miso 154

sss 89

abc 18

abcde 0

uyt 58

john 28

若是 print rs2tab($rs, true);

结果如下:

姓名 年纪

abcde 45

yyy 20

ppp 34

mmm 13

hhh 41

rrr 65

kkk 29

miso 154

sss 89

abc 18

abcde 0

uyt 58

john 28

也可以将结果由标准输出(STDOUT)显示,使用 rs2tabout 方法如下:

print rs2tabout($rs);

执行结果如下:

Figure 1. 在console中显示结果

也可以存成 CSV 档:

// 档案路径

$path = "/tmp/test.csv";

// 开档供写入

$fhd = fopen($path, "w");

// 若开档成功

if ($fhd) {

// 则写入 CSV

rs2csvfile($rs, $fhd);

// 也可以使用 rs2tabfile($rs, $fhd);

// 关档

fclose($fhd);

}

结果如下:

[ols3@p web]$ cat /tmp/test.csv

姓名,年纪

abcde,45

yyy,20

ppp,34

mmm,13

hhh,41

rrr,65

kkk,29

miso,154

sss,89

abc,18

abcde,0

uyt,58

john,28

16. 取出一定笔数的记录 (使用 SelectLimit) 
ADODB 提供一个 ADOConnect 函式 SelectLimit,可供您取出一定笔数的记录,用法如下:

$conn->Connect($mch, $user, $pwd, $database);

rs = $conn->SelectLimit("Select * from t", 3, 1);

// 取出 3 笔、在第 1 笔之后

// 秀出这 3 笔记录

if ($rs) {

while( $ar = $rs->FetchRow() ) {

print $ar['name'] ." " . $ar['year'];

print "<br>\n";

}

}

上式是说:在第 1 笔记录之后,取出 3 笔,也就是第 2、3、4 笔记录。

结果如下: 
--------------------------------------

(mysql): select * from t LIMIT 1,3

--------------------------------------

注意 ! SelectLimit 的写法刚好和 MySQL 语法相反 !

(0)

相关推荐

  • PHP程序中使用adodb连接不同数据库的代码实例

    adodb.inc.php文件需要去下载一个adodb,放在相应的位置,然后在php中include进来就可以. 连接oracle数据库 <?php include("adodb/adodb.inc.php"); //包含adodb类库文件 $conn = &NewADOConnection('oci8'); $conn->Connect($DBServer,$DBUser,$DBPass); ?> 连接PostgreSQL数据库 <?php inclu

  • php adodb连接mssql解决乱码问题

    周海汉/文ADO可以用 new COM("ADODB.Connection", NULL, CP_UTF8)//65001 这样的语句来实现正确转换.但ADO对php的支持缺乏文档.而有个开源的adodb,文档较为丰富. 其中对不同数据库驱动,设置UTF-8的方法还不一样,如下: 复制代码 代码如下: For all drivers 'persist', 'persistent', 'debug', 'fetchmode', 'new' Interbase/Firebird 'dial

  • 常用的php ADODB使用方法集锦

    复制代码 代码如下: <?php //定义数据库变量         $DB_TYPE     = "mysql";         $DB_HOST     = "localhost";         $DB_USER     = "root";         $DB_PASS     = "";         $DB_DATABASE = "ai-part";         require

  • PHP中ADODB类详解

    虽然 PHP 是建构 Web 系统强有力的工具,但是 PHP 存取数据库的功能,一直未能标准化,每一种数据库,都使用另一种不同且不兼容的应用程序接口(API).为了填补这个缺憾,因此才有 ADODB 的出现.一旦存取数据库的接口予以标准化,就能隐藏各种数据库的差异,若欲转换至其它不同的数据库,将变得十分容易. 目前 ADODB 支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Acc

  • Android中CountDownTimer类详解

    一.概述 项目中经常用到倒计时的功能,比如说限时抢购,手机获取验证码等等.而google官方也帮我们封装好了一个类:CountDownTimer,使我们的开发更加方便: 二.API CountDownTimer是一个抽象类,有两个抽象方法,它的API很简单 public abstract void onTick(long millisUntilFinished);//这个是每次间隔指定时间的回调,millisUntilFinished:剩余的时间,单位毫秒 public abstract voi

  • Java中Thread类详解及常用的方法

    目录 一.Thread 的常见构造方法 二.Thread 的常见属性 三.创建线程 四.中断线程 五.线程等待 六.获取线程引用 七.线程休眠 八.线程状态 总结 一.Thread 的常见构造方法 方法 说明 Thread() 创建线程对象 Thread(Runnable target) 使用 Runnable 对象创建线程对象 Thread(String name) 创建线程对象并命名 Thread(Runnable target,String name) 使用 Runnable 对象创建线程

  • Java 中ThreadLocal类详解

    ThreadLocal类,代表一个线程局部变量,通过把数据放在ThreadLocal中,可以让每个线程创建一个该变量的副本.也可以看成是线程同步的另一种方式吧,通过为每个线程创建一个变量的线程本地副本,从而避免并发线程同时读写同一个变量资源时的冲突. 示例如下: import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import ja

  • 基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象.java默认的分隔符是"空格"."制表符('\t')"."换行符('\n')"."回车符('\r')". StringTokenizer(String str,String delim)

  • JavaScript知识点总结(十一)之js中的Object类详解

    JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的.Object对象主要用于将任意数据封装成对象形式. 一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructor:对象的构造函数. 2.prototype:获得类的prototype对象,static性质. 三.Object类主要方法 1

  • C++ 中友元函数与友元类详解

    C++ 中友元函数与友元类详解 总的来说,友元分为两类:友元函数与友元类.友元是针对类而言,它提供了一种非类的成员函数来访问类的非公有成员的一种机制.可以把一个函数指定为某类的友元,这个函数称为这个类的友元函数.也可以将类A指定为类B的友元,则类A是类B的友元类,类A的所有成员函数均是类B的友元函数,均可以访问类B的非公有成员.        友元函数的注意事项: (1)友元函数不是类的成员函数,在函数体中访问对象的成员,必须用"对象名.对象成员"方式来访问, 友元函数可以访问类中的所

  • 浅谈C++ 类的实例中 内存分配详解

    一个类,有成员变量:静态与非静态之分:而成员函数有三种:静态的.非静态的.虚的. 那么这些个东西在内存中到底是如何分配的呢? 以一个例子来说明: #include"iostream.h" class CObject { public: static int a; CObject(); ~CObject(); void Fun(); private: int m_count; int m_index; }; VoidCObject::Fun(){ cout<<"Fu

  • JAVA中的Configuration类详解

    本文主要研究的是Java中的Configuration类的用法,涉及maven自动加载,pom.xml配置和简单的Java代码,具体如下. properties文件是Java平台默认的配置文件格式,其优点是格式清晰,简单易懂,使用commons-configuration读取properties文件也比较简单,代码如下: 基本用法: 1.加载jar包,我使用maven自动加载,pom.xml配置如下: <dependency> <groupId>commons-configurat

  • Java中Arrays类与Math类详解

    Arrays(数组工具类) Java中已经封装好的类,提供大量静态方法供用户对数组的使用. 导包:import java.util.Arrays 1.Arrays.toString(数组) //返回值是一个[]括起来的字符串,将数组中的元素放入[]中 int[] arr=new int[]{1,2,3,4}; String str=Arrays.toString(arr); System.out.println(str); -------------------------------- [1,

随机推荐