PHP对战ASP:这还值得讨论吗?

发表于 2009-06-26 03:06

什么是PHP

分类: PHP | 阅读全文

学习动态网页技术PHP:GD库安装问题详解

发表于 2009-06-26 00:06

使php支持 gif , jpeg , ttf ,wbmp

分类: PHP | 阅读全文

讲解php字符串处理函数

发表于 2009-06-25 21:06

addcslashes —— 为字符串里面的部分字符添加反斜线转义字符

分类: PHP | 阅读全文

关于PHP接口的学习

发表于 2009-06-25 16:06

最近学习PHP5接口的过程中遇到了困难 ,书中说是实现多重继承的一种方式,但我依然不知道具体该如何实现。在网上查PHP接口的资料很少,就查了java的,其实基本上都差不多。看完《澄清Java(接口与继承)》这篇文章才恍然大悟,原来我一开始理解就有误,所谓的多重继承是指接口继承类,而不是类继承接口。
    文章中提到了OO的抽象,正如文章中的那句话——"抽象就是抽去像的部分",很形象,以前想到抽象总是认为很难理解,抽象嘛,哈哈,现在就很容易理解了,这也正是接口和抽象类所要做的事情。
文章中还有很多观点也让我受益匪浅,罗列如下:
OO的精髓,我以为,是对对象的抽象。
 接口的作用,一言以蔽之,就是标志类的类别(type of class)。把不同类型的类归于不同的接口,可以更好的管理他们。
继承的意义也在于抽象,而不是代码重用。
看完这篇文章,现在基本上理解接口、抽象类、继承该如何应用了。

分类: PHP | 阅读全文

PHP企业级应用之常见缓存技术篇

发表于 2009-06-25 15:06

别每天OO,这个配置怎么改,这段代码哪错了,没劲,好的程序不光是代码写的好,整体架构很重要,多了解程序之外的东西,这篇不再单单是程序方面的东西了,会写到从程序到服务器的设置,会比较多,但个人的经验有限,知道的就这么多,不知道的我也没法写呀, 文章说的不好大家就当我说梦话得了。

分类: PHP | 阅读全文

PHP脚本的8个技巧(1)

发表于 2009-06-25 15:06

把PHP安装为ApacheDSO

PHP经常和ApacheWeb服务器一道用于Linux/Unix平台。当我们在Apache环境下安装PHP的时候,你有三种安装模式可供选择:静态模块、动态模块(DSO)和CGI。

我建议你最好把PHP安装为Apached的DSO,这种安装模式的维护和升级都相当简单。比方说,假设你原先只安装了PHP的数据库支持功能。可过了几天之后你又决定要为PHP添加加密功能。很简单,你只要键入makeclean命令,然后增加新的配置选项,接着再执行make和makeinstall命令即可。这样,新的PHP模块就会被安装到Apache上的恰当位置,你只要重新启动Apache就一切OK了,当然,整个过程完全不用重新编译Apache。

安装新版本的Apache以及安装作为ApacheDSO的PHP的简单步骤如下所示:

1.从Apache软件基金会这一站点下载Apache服务器软件的最新版本源代码。
2.把代码文件放到/usr/local/或者/opt/等合适的目录下。
3.用Gunzip命令对代码文件解压缩,然后你可以得到相应的*.tar文件。
4.键入以下的解包命令把以上的tar文件放到形为apache_[version]的目录下:

tar-xvfapache_[version].tar

5.进到/usr/local/apache_[version]目录(或者在上面步骤中你所指定的目录)。
6.键入下面的配置命令,用你设定的路径(比如/usr/local/apache[version]等,注意后面不要跟斜线!)取代[path]参数,同时你还要启用mod_so参数以允许Apache使用DSO。

./configure–prefix=[path]–enable-module=so

7.回到命令提示行键入make命令并等待命令执行完成再次回到命令提示状态下。
8.键入makeinstall。

到这个时候,编译器即可创建最终的目录并返回到系统的命令提示状态下。

接下来安装PHP:

1.访问PHP主页的下载区域选中最新版本源代码的链接。
2.把下载的文件放到/usr/local/或者/opt/等适当的目录下。
3.用Gunzip命令对代码文件解压缩,然后你可以得到相应的*.tar文件。
4.键入以下的解包命令把以上的tar文件放到形为php-[version]的目录下:

tar-xvfphp-[version]

5.进到/usr/local/php-[version]目录下(或者你指定的目录)。

现在即可编译PHPDSO,其实这里只需要一个必要的配置选项–with-apxs(Apachebin目录下的一个文件)–不过,为了系统配置更为全面,我们在这里还增加了对MySQL数据库的支持。

./configure–with-mysql=/[pathtomysql]–with-apxs=/[pathtoapxs]

6.回到命令提示行下键入make命令并等到命令执行完成再次回到命令提示状态下。
7.键入makeinstall命令。

在这个时候,编译器将会创建最终的DSO,并把它放在Apache模块目录下,同时会为你修改Apache的httpd.conf配置文件,之后系统回到命令提示状态下等待你输入新指令。然后,你即可打开Apache的httpd.conf配置文件做一些修正:

1.找到有ServerAdmin字样的一行,加入你自己的电子邮件地址,如下所示:

ServerAdminyou@yourdomain.com

2.找到以ServerName开头的一行,把后面的参数修改为实际值,比如:

ServerNamelocalhost

3.找到下面一段:

#AndforPHP4.x,use:
#
#AddTypeapplication/x-httpd-php.php
#AddTypeapplication/x-httpd-php-source.phps

修改这些配置行以便取消PHP4.0下的某些加在AddType之前的注释,同时你应该添加一些为PHP所使用的文件扩展名,修改后的以上各行看起来可能会是下面这样子:

#AndforPHP4.x,use:
#
AddTypeapplication/x-httpd-php.php.phtml
AddTypeapplication/x-httpd-php-source.phps

保存以上的配置文件,回到上级目录,键入以下命令即可启动Apache:

./bin/apachectlstart

如果启动期间没有出现什么问题,你即可测试Apache和PHP的安装情况,方法是创建一个名叫phpinfo.php的文件,其中包含了以下的代码行:

<?phpinfo()?>

保存该文件并把它放置在Apache的文档根目录下(htdocs),然后启动你的Web浏览器,在浏览器地址栏里键入http://localhost/phpinfo.php,浏览器即会以很大的篇幅显示出PHP和Apache系统的各个变量和变量值。

如果你想要重新设置PHP,你需要做的不外乎是执行makeclean命令,然后执行带有新配置选项的./configure命令,接着执行make和makeinstall。这样,Apache模块目录中就会出现一个新模块,你只要重启Apache以装载新模块。以前的许多头疼问题现在就迎刃而解了。

分类: PHP | 阅读全文

《PHP设计模式介绍》第三章 工厂模式

发表于 2009-06-25 15:06

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况, 新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。

分类: PHP | 阅读全文

dedecms5.1升级sp1出现IfTagNull()错误解决方法记录

发表于 2009-06-25 13:06

最近有报告错误说从dedecms5.1升级sp1出现错误,代码大致如下:

分类: PHP | 阅读全文

PHPUnit袖珍指南之命令行测试工具

发表于 2009-06-25 13:06

PHPUnit命令行测试工具是通过phpunit命令调用的。如下代码显示如何通过PHPUnit命令行测试工具运行测试。

 

phpunitArrayTest
PHPUnit2.3.0bySebastianBergmann.

Time:0.067288

OK(2tests)
对每个测试,PHPUnit命令行测试工具打印一个字符表示进程:

·测试成功打印“.”。

·运行测试方法是发生了断言失败打印“F”。

·运行测试方法是发生了错误打印“E”。

·测试没有完成或测试没有实现打印“I”(见本书后“未完成的测试”一章)。

PHPUnit可以区分失败和错误。一个失败是PHPUnit的断言违例,错误是一个意料外的异常或一个PHP错误。有时候这种差别是有用的,因为错误相比失败更容易修正。如果你有一大串问题列表,最好先解决所有错误,然后看看有没有失败遗留下来。

让我们看看如下一些代码命令行测试工具的选项:

 

  phpunit–help
PHPUnit2.3.0bySebastianBergmann.

Usage:phpunit[switches]UnitTest[UnitTest.php]
–coverage-data<file>Writecode-coveragedatainrawformattofile.
–coverage-html<file>Writecode-coveragedatainHTMLformattofile.
–coverage-text<file>Writecode-coveragedataintextformattofile.
–testdox-html<file>WriteagiledocumentationinHTMLformattofile.
–testdox-text<file>WriteagiledocumentationinTextformattofile.
–log-xml<file>LogtestprogressinXMLformattofile.
–loader<loader>TestSuiteLoaderimplementationtouse.
–skeletonGenerateskeletonUnitTestclassforUnitinUnit.php.
–waitWaitsforakeystrokeaftereachtest.
–helpPrintsthisusageinformation.
–versionPrintstheversionandexits.
phpunitUnitTest

运行类UnitTest提供的测试,该类应该定义在源文件UnitTest.php中。

类UnitTest必须继承PHPUnit2_Framework_TestCase类,或是提供了公有静态方法suite,并返回PHPUnit2_Framework_Test对象的类(例如,类PHPUnit2_Framework_TestSuite的一个实例)

phpunitUnitTestUnitTest.php

运行类UnitTest提供的测试,该类要定义在命令指定的源文件(UnitTest.php)中。

–coverage-data,–coverage-html,and–coverage-text

控制运行测试的代码覆盖信息的分析和集合(参见本书后代码覆盖分析一节)

–testdox-htmland–testdox-text

以HTML或普通文本格式生成运行测试的敏捷文档(参见本书后的“测试的其他用途”一章)

–log-xml

生成运行测试的XML格式的日志文件。

下一个例子显示为ArrayTest中的测试生成的XML日志文件。

 

  <?xmlversion="1.0"encoding="UTF-8"?>
<testsuites>
 <testsuitename="ArrayTest"tests="2"failures="0"errors="0"time="0.020026">
 <testcasename="testNewArrayIsEmpty"class="ArrayTest"time="0.014449"/>
 <testcasename="testArrayContainsAnElement"class="ArrayTest"time="0.005577"/>
</testsuite>
</testsuites>
下面的XML日志文件是为名为FailureErrorTest的测试类两个测试生成的,一个是testFailure,一个是testError。这显示了失败和错误是如何分别表示的。

 

  <?xmlversion="1.0"encoding="UTF-8"?>
<testsuites>
 <testsuitename="FailureErrorTest"tests="2"failures="1"errors="1"time="0.013603">
 <testcasename="testFailure"class="FailureErrorTest"time="0.011872">
 <failuremessage=""type="PHPUnit2_Framework_AssertionFailedError"></failure>
</testcase>
<testcasename="testError"class="FailureErrorTest"time="0.001731">
 <errormessage=""type="Exception"></error>
</testcase>
</testsuite>
</testsuites>
–loader
指定将要使用的测试套件加载器。

标准测试套件加载器会在当前工作目录和PHP的include_pathconfiguration指令定义的路径中寻找源文件。按照PEAR的命名规则,形如Project_Package_Class的类名会映射到的源文件为Project/Package/Class.php。

–skeleton

为类Unit(在文件Unit.php中)生成一个名为UnitTest(在文件UnitTest.php中)的测试用例类的框架。对原始类的每个方法,在生成的测试用例类中提供了一个未完成的测试用例(见本书后的“未完成测试”部分)。

下面的例子显示了如何为一个名为Sample的类生成一个测试类的框架。

 

  phpunit–skeletonSample
PHPUnit2.3.0bySebastianBergmann.
WrotetestclassskeletonforSampleto
SampleTest.php.
phpunitSampleTest
PHPUnit2.3.0bySebastianBergmann.
I
Time:0.007268
Therewas1incompletetestcase:
1)testSampleMethod(SampleTest)
OK,butincompletetestcases!!!
Testsrun:1,incompletetestcases:1.
当你为现有代码书写测试时,你不得不重复很多相同的代码片断,如:

 

  publicfunctiontestSampleMethod(){}
PHPUnit能帮助你分析现有代码,生成测试用例类的框架。

–wait

每个测试结束时,等待一次击键。这很有用,特别是你在一个只有测试一直运行在打开的窗口中运行测试时。

提示当被测试代码中有PHP语法错误时,文本界面的测试会直接退出,不输出任何错误信息。标准的测试套件加载器会检查测试套件的源文件的PHP语法错误,但是,它不会检查测试套件包含的源文件的语法错误。PHPUnit的未来版本会用在砂箱中PHP解释器类解决这个问题。

分类: PHP | 阅读全文

PHP中GBK和UTF8编码处理

发表于 2009-06-25 11:06
以下为引用的内容:

 一、编码范围
1. GBK (GB2312/GB18030)
x00-xff GBK双字节编码范围
x20-x7f ASCII
xa1-xff 中文
x80-xff 中文

分类: PHP | 阅读全文