简单生活 发表于 2015-2-4 00:24:51

PHP网站制作之Using COM with PHP(我就不翻译了)

参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。   Using COM with PHP
   By John Lim.

PHP4 on Windows has been extended to support Microsoft's COM technology. However documentation on the COM functions is very sparse at the moment.

Here are some examples of stuff I have tried. Hope this gives you some ideas. Note that these only work when you are running PHP on a Windows Web server.


Active Data Objects (ADO) with PHP
ADO is Microsoft's database object technology. There are objects for connecting to databases, recordsets for data returned from queries, and field objects representing data elements.

Most databases do not support ADO directly. Instead most databases support 2 lower level Microsoft database technologies: ODBC and OLEDB. More databases support ODBC; but OLEDB has a reputation of being faster than ODBC.

ADO is then an API wrapper around ODBC and OLEDB.

This example opens a new ADO Connection object, opens the traditional NorthWind MS-Access database via ODBC. When we execute the SQL, a RecordSet object is returned. We then display the first 3 fields of the record-set.


<?
    $dbc = new COM("ADODB.Connection");
    $dbc->Provider = "MSDASQL";
    $dbc->Open("nwind");
    $rs = $dbc->Execute("select * from products");
    $i = 0;
    $fld0 = $rs->Fields(0);
    $fld1 = $rs->Fields(1);
    $fld2 = $rs->Fields(2);
    while (!$rs->EOF) {
      $i += 1;
      print "$fld0->value $fld1->value $fld2->value<BR>";
      $rs->MoveNext(); /*updates fld0, fld1, fld2 !*/
    }
    $rs->Close();
?>

The equivalent of PHP's print $fld0->value in VBScript is Response.Write( rs.Fields(0).value ); or more concisely Response.Write( rs(0) ) because the default collection of a recordset (rs) is Fields and default property of a Field element is value.

PHP does not support default collections and properties, so we have to write everything explicitly.


Invoking Microsoft Word with PHP
Here is another example.

<?
$word=new COM("word.application") or die("Cannot start MS Word");
print "Loaded word version ($word->Version)\n";
$word->visible = 1 ;
$word->Documents->Add();
$word->Selection->Typetext("This is a test");
?>

Word's COM object model documentation is available in the online help, but it is not in the default installation. Go to the MS Office installer, select VBScript Documentation in options and you will be ready to have some fun!


PHP COM Bugs
While testing ADO, I hit this bug with PHP 4.02. It seems that passing a COM object as a parameter to a second COM object fails.


<?
$dbc = new COM('ADODB.Connection');
$dbc->Provider = 'MSDASQL';
$dbc->Open('NWIND'); // standard sample access database northwind
$rs = new COM("ADODB.Recordset");

/* The following line fails with an INVOKE error */
/* because we are passing $dbc to $rs            */
$rs->Open('select * from product',$dbc,3); // 3 = static cursor
?>

Another bug is that the data types null and currency are not supported.

3 Jan 2001: None of the above bugs have been fixed in PHP 4.0.4. Do we have any COM C++ experts who could fix the bugs? PHP is open source after all.   建议大家买一本书,而不光是在网上看一些零碎的资料,一本书毕竟会讲的系统一些,全面一些,而且印刷的书不受电脑的限制,但是建议在看书的时候最好旁边有电脑,这样可以很及时地上机实践。

精灵巫婆 发表于 2015-2-4 13:01:19

基础有没有对学习php没有太大区别,关键是兴趣。

兰色精灵 发表于 2015-2-9 20:42:17

使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。

愤怒的大鸟 发表于 2015-2-11 10:19:23

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

飘灵儿 发表于 2015-2-20 14:31:58

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

只想知道 发表于 2015-3-2 01:57:21

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

爱飞 发表于 2015-3-5 14:48:15

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

分手快乐 发表于 2015-3-8 17:12:56

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

谁可相欹 发表于 2015-3-16 07:04:05

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

若天明 发表于 2015-3-19 11:19:19

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

因胸联盟 发表于 2015-3-27 19:08:44

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

仓酷云 发表于 2015-3-30 23:21:09

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

小女巫 发表于 2015-4-6 10:30:16

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

灵魂腐蚀 发表于 2015-5-3 03:44:57

实践是检验自己会不会的真理。

简单生活 发表于 2015-5-3 21:58:30

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

乐观 发表于 2015-6-14 00:33:34

兴趣是最好的老师,百度是最好的词典。

不帅 发表于 2015-6-18 07:31:42

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

变相怪杰 发表于 2015-6-23 18:50:57

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

透明 发表于 2015-6-30 00:38:52

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

山那边是海 发表于 2015-7-2 04:14:56

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
页: [1]
查看完整版本: PHP网站制作之Using COM with PHP(我就不翻译了)