存档

‘PHP教程’ 分类的存档

php_call_oracle_procedure

2010年8月12日

在PHP中调用oracle中的存储过程,通常就是采用PHP的OCI扩展所提供的函数来进行调用。

关于PHP调用存储过程,基本上的搜索到的国内的网页,其步骤都差不多,也只是谈到了存储过程返回一般参数,即Varchar2、number这种类型,基本上没有讲到如何返回ref cursor类型。

笔者经过测试发现,其实调用返回ref cursor类型的存储过程,其方式也与一般的调用类似,唯一不同的地方就是在采用oci_bind_by_name将采用oci_ew_cursor的创建的cursor类型的变量绑定到输出游标后,在采用oci_execute执行预处理resource后,需要采用oci_execute执行刚才所绑定的那个游标,再采用oci_fetch_*等函数获取该游标的值

各位TX可以参考以下的代码:

<?php
$conn = oci_connect('SCOTT','TIGER') or die;

$sql = 'BEGIN blog.latest(:num_entries, :blog_entries); END;';

$stmt = oci_parse($conn, $sql);

// Bind the input num_entries argument to the $max_entries PHP variable
$max_entries = 5;
oci_bind_by_name($stmt,":num_entries",$max_entries,32);

// Create a new cursor resource
$blog_entries = oci_new_cursor($conn);

// Bind the cursor resource to the Oracle argument
oci_bind_by_name($stmt,":blog_entries",$blog_entries,-1,OCI_B_CURSOR);

// Execute the statement
oci_execute($stmt);

// Execute the cursor
oci_execute($blog_entries);

print "The $max_entries most recent blog entries\n";

// Use OCIFetchinto in the same way as you would with SELECT
while ($entry = oci_fetch_assoc($blog_entries, OCI_RETURN_LOBS )) {
    print_r($entry);
}
?>

以上代码中标红色的那句代码至关重要,若返回的游标没有执行的话,将无法获取到游标的内容!

注意:在写存储过程时,若遇到同时有varchar2、number、ref_cursor等类型的做为输出时,需要将ref_cursor类型的参数放在参数列表的最后,否则将可能出现意想不到的异常!

具体原因笔者也未找到,若有TX发现,可一起讨论一下!

另外,Oracle表中的Clob类型的字段,在查询出结果后,采用var_dump出来看,会发现,那个字体是resource类型,resource类型是不能够直接显示的,需要采用stream_get_contents或者fgets等函数才能取出相应的字符串。

这个处理相对比较简单,这里就不用专门写DEMO了。

PHP教程 , , , , , , , ,

php数组排序

2010年5月5日

近日,看到一关于PHP数组排序的问题,居然在瞬间没有想出如何实现!真的是有点丢分呢。。。

于是想起CSDN上曾有一篇文章说过只有20%的人能够实现二分查找,看来我在那20%之外了

于是想了一下,得出以下实现算法,供大家借鉴。

<?php
class sortNum{
        private $_sortArr;
        private $_tmp = array();
        function __construct($arr=array()){
                if(count($arr)!=0)
                        $this->_sortArr = $arr;
        }
        function __desctruct(){
            unset($this->_sortArr);
            unset($this->_item);
        }
        public function setNum($arr){
                if(count($arr)!=0){
                        $this->_sortArr = $arr;
                        return true;
                }else
                        return false;
        }
        public function sortArray(){
            $num=count($this->_sortArr);
            $min=-999999999;
            for($i=0;$i<=$num;$i++){
                $mina=999999999;
                foreach ($this->_sortArr as $key => $value) {
                    if($value>$min&&$value<$mina){
                        $this->_tmp[$i]=$value;
                        $mina=$value;
                    }
                }
                $min=$mina;
            }
            return $this->_tmp;
        }
}

$st = array(2,6,1,5,3,7);
$obj=new sortNum($st);
$rs = $obj->sortArray();
print_r($rs);

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 6
    [5] => 7
)

 

这里,看来以后得多加注意这种基本的算法问题了,不然再次出现这种情况,可真是冤啊。。。

PHP教程 , ,

意外的惊喜

2010年4月30日

今天下午,在斑马线等待一位朋友时,突然看到一TX手里面拿着一本书,感觉好眼熟,于是问了一下该同学,兄弟,请问你拿的是什么书?那兄弟也挺配合的, 就直接把手里面的书给我看,我一看,难怪那么眼熟,原来这就是我写的那本书!

我看那书后好像贴着标签,有点像是借的,我就问那兄弟,你这本书是买的还是借的?该同学回答,这是借的。那你是从哪里借的呢?是从我们学校图书馆借的。你们学校是…?成都理工大学。哦,原来这样,好,没事,多谢兄弟!

正好我的朋友也从对面走了,我也该走了。

真是没有想到居然在这个时候看到有人拿着我的书,并且还是从学校图书馆借的,难得!真没有想到我的书居然进了成都理工大学的馆藏!

多谢你们!

今天是我的喜庆日子,还真没有想到我自己居然发现这样的喜庆!

PHP从入门到精通, PHP教程

关于JS获取select的值

2010年3月16日

近日,在一项目中需要采用JS获取Select选择框所选中项的值,居然一下子忘记了如何获取。于是看了DOM文档,真觉得是自己老了,连这么简单的东西都忘记了。

为怕以后再忘记,也给同行一个提示,遂记录于此。

<select id="s1" name="s1">
<option selected="selected" value="1">选项一</option>
<option value="2">选项二</option>
<option value="3">选项三</option>
</select>

操作一、获取所选择项显示的文字

document.getElementById(‘s1’).options[document.getElementById(‘s1’).selectedIndex].text

若当前选中“选项二”,则这种方式所取的结果为:选项二

操作二、获取所选择项的value

document.getElementById(‘s1’).options[document.getElementById(‘s1’).selectedIndex].value

若当前选中“选项二”,则这种方式所取的结果为:2

操作三、获取当前选择项

document.getElementById(‘s1’).selectedIndex

若当前选中“选项一”,则这种方式所取的结果为:1

这里对于select必须得有id属性,才能采用getElementById获取该控件,这点需要注意。

另外,对于PHP获取页面所提交的Select控件的值,需要Select控件得有name属性,在PHP内获取表单上的Select控件数据时,采用$s = $_POST[‘select的name属性值’];这种方式来获取。

怎么样? 其实很简单的吧,希望能给初学者一个启示!

HTML, Javascript, PHP教程 , , ,

Session中的KEY

2009年11月26日

近时在项目中遇到一问题,因未对某一输入值对相关限制,导致输入值有可能为全数字。

而在项目中将该输入值直接做为Session中的key,此时就出现了奇怪问题:原本入到Session中的数据一下子丢失了,然后再进行了初始化,进而导致在使用Session中的数据出错,始终找不到具体原因。

详细看了一下手册,原来将数据放到Session中,其key必须采用和变量一样的命名,即必须以字母、下划线开头。而这里以全数字为key将数据放到Session中,就导致了会在每时每刻都生成一个新的session id,即Session失效了!

找到了症结所在,解决之!一切完好!

PHP教程 ,

谈PHP中的多态

2009年9月9日

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。

多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

在面向对象的软件开发中,多态性是最为重要的部分之一。面向对象编程并不只是将相关的方法与数据简单的结合起来,而是采用面向对象编程中的各种要素将现实生活中的各种情况清晰的描述出来。这一小节将对面向对象编程中的多态性作详细的讲解。

10.2.1  什么是多态

多态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。

在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作一个父类来处理,并且可以屏蔽不同子类对象之间所存在的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

10.2.2  多态的应用设计

在实际的应用开发中,通常为了使项目能够在以后的时间里的轻松实现扩展与升级,需要通过继承实现可复用模块进行轻松升级。在进行可复用模块设计时,就需要尽可能的减少使用流程控制语句。此时就可以采用多态实现该类设计。

【示例10.4】例举了通常采用流程控制语句实现不同类的处理。其代码如下所示。

<?php
    class painter{                                    //定义油漆工类
        public function paintbrush(){                 //定义油漆工动作
            echo "油漆工正在刷漆!\n";
        }
    }
    class typist{                                    //定义打字员类
        public function typed(){                     //定义打字员工作
            echo "打字员正在打字!\n";
        }
    }
    function printworking($obj){                    //定义处理类
        if($obj instanceof painter){                //若对象是油漆工类,则显示油漆工动作
            $obj->paintbrush();
        }elseif($obj instanceof typist){            //若对象是打字员类,则显示打字员动作
            $obj->typed();
        }else{                                    //若非以上类,则显示出错信息
            echo "Error: 对象错误!";
        }
    }
    printworking(new painter());                    //显示员工工作
    printworking(new typist());                     //显示员工工作
?>

分析:在上述程序中,首先定义两个员工类:油漆工类和打字员类。然后定义一个处理函数,在该函数中,判断员工是否为已经定义的员工,打印出员工的工作状态。其结果如下所示。

油漆工正在刷漆 

打字员正在打字

从以上程序可轻松看出,若想显示其几种员工的工作状态,需要首先定义该员工类,并在该员工类中定义员工的工作,然后在printworking()函数中增加elseif语句以检查对象是哪一员工类的实例。这在实际的应用中,是非常不可取的。若此时采用多态,则可以轻松解决此问题。

可以首先创建一个员工父类,所有的员工类将继承自该员工父类,并且继承父类的所有方法与属性。然后在员工类中创建“是一”关系,判断是否为合法的员工。

【示例10.5】例举了采用多态的方式改写上例。其代码如下所示。

<?php
	class employee{							//定义员工父类
		protected function working(){				//定义员工工作,需要在子类的实现
			echo "本方法需要在子类中重载!";
		}
	}
	class painter extends employee{					//定义油漆工类
		public function working(){				//实现继承的工作方法
			echo "油漆工正在刷漆!\n";
		}
	}
	class typist extends employee{					//定义打字员类
		public function working(){
			echo "打字员正在打字!\n";
		}
	}
	class manager extends employee{					//定义经理类
		public function working(){
			echo "经理正在开会!";
		}
	}
	function printworking($obj){					//定义处理方法
		if($obj instanceof employee){				//若是员工对象,则显示其工作状态
			$obj->working();
		}else{							//否则显示错误信息
			echo "Error: 对象错误!";
		}
	}
	printworking(new painter());					//显示油漆工的工作
	printworking(new typist());					//显示打字员的工作
	printworking(new manager());					//显示经理的工作
?>

分析:在上述程序中,首先定义一个员工基类,并定义一个员工工作状态的方法。然后定义将继承自员工基类的三个员工类:油漆工类、打字员类和经理类。然后定义显示员工工作状态的方法。并在该方法中创建一个“是一”关系,用于判断是否为合法的员工。其结果如下所示。

油漆工正在刷漆!

打字员正在打字!

经理正在开会!

从上例可发现,无论增加多少个员工类,只需要实现自员工父类继承的该员工类和方法。而无须修改显示员工工作状态的方法printworking()。

PHP从入门到精通, PHP教程 ,

《PHP从入门到精通》样章-14章

2009年9月8日

第14章 PHP与AJAX

AJAX技术是近年流行起来的技术。它是现有的多种技术的综合应用,包括JavaScript技术、XML技术、DOM技术和XMLHttpRequest控件等多种技术。AJAX技术是现在流行的Web2.0的一个重要标志。本章将对以下内容讲解:

  • AJAX原理。

  • AJAX的核心技术。

  • AJAX的相关应用。

通过对本章的学习,读者将能够理解什么是AJAX,其工作原理是什么,并且能够在实际的应用中使用AJAX

14.1 AJAX概述

AJAX技术是当前Web技术中一门炙手可热的新兴技术。实质上,它并非一门新技术,而是几种新技术的强大组合。它能够为用户提供更为自然的浏览体验。这一节将对AJAX进行详细地介绍。

14.1.1 什么是AJAX

传统B/S模式的应用程序的弊端是对用户反应不灵敏,用户总是处于“提交=>等待=>响应”的过程中,也就是说“用户的动作总是在和服务器思考时间同步”。而AJAX提供了与服务器异步通信的能力,从根本上让用户从“请求=>等待=>响应”的循环中解脱出来。

AJAXAsynchronous JavaScript and XML(以及DHTML等)的缩写,翻译成中文为异步JavaScriptXML。这个短语是Adaptive PathJesse James Garrett发明的,按照Jesse的解释,这不是个首字母缩写词,AJAX技术包含:

  • 基于CSS标准的表示。

  • 使用Document Object Model进行动态显示和交互。

  • 使用XMLHttpRequest与服务器进行异步通信。

  • 使用JavaScript绑定一切。

AJAX是现有多种技术的综合应用。它是通过浏览器页面与服务器后台处理的异步处理来减少网络传输,进而减少用户的等待时间和服务器负担的一种综合技术。它由HTMLJavaScript技术、DHTMLDOM组成,这一方法可以将传统笨拙的Web界面转化成交互性的AJAX应用程序。

14.1.2 工作原理

AJAX的核心是XMLHttpRequestXMLHttpRequest提供了与服务器异步通信的能力,从而让用户在请求的时候不受到阻塞。其工作流程如下所述。

首先由用户在客户端浏览器页面触发某个事件,如onclick事件,当然,这个事件只能是被JavaScript脚本语言捕获到的事件。然后JavaScript脚本相应的创建一个XMLHttpRequest请求,并通过XMLHttpRequest异步的把请求发送到服务器端,同时等待服务器端的响应。服务器端程序在接受客户端所提交的请求后,进行处理并把结果返回。返回的结果被XMLHttpRequest捕获到并返回给JavaScript,再由JavaScript调用相应的DOM进行显示层的控制。如图14-1所示。

14-1 AJAX工作原理图

要让AJAX能够成功运行,需要用户的客户端与服务端两种技术互相配合。客户端采用JavaScript引擎向服务器端发送请求,服务端根据客户端提交的请求返回指定内容。

用户客户端的XMLHttpRequest对象使JavaScript以异步方式访问服务器成为可能。这样当JavaScript函数在后台向服务器提交请求时,用户可以在客户端页面继续其他的工作。

14.1.3 优点与缺点

AJAX技术作为近年来流行的技术,有其技术优点,也有其缺点。优点主要有以下几个方面。

  • AJAX可以提高系统性能,优化用户界面,增强用户浏览体验。

  • AJAX允许在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户的动作,并避免了在网络上发送那些没有改变过的信息。

  • AJAX应用可以仅向服务器发送并取回必需的数据,服务器与客户端之间交换的数据大大减少。

  • AJAX不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

  • AJAX允许将一些服务端的操作移至客户端,减轻了服务器的负担。

其缺点主要有以下几个方面。

  • AJAX可以在不刷新页面的情况下更新页面数据,这可能破坏浏览器【后退】按钮的正常行为。

  • AJAX在客户端执行,因此在开发时需考虑到AJAX的兼容性。

  • AJAX对串流媒体的支持没有FLASHJava Applet好。

  • 由于AJAX的代码存放在页面的HTML语言中,因此项目代码可能因此泄漏。

  • 使用AJAX动态更新页面使得用户难于将某个特定的状态保存到收藏夹中。

  • AJAX的无刷新重载使得页面的变化没有刷新重载整个页面那么明显,所以容易给用户带来困扰。

  • JavaScriptAJAX引擎,不得不考虑JavaScript的兼容性和DeBug等问题。

  • 现有的好多手持设备(例如PDA、手机等)不能很好地支持AJAX

14.2 使用AJAX

AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。它由用户的客户端通过JavaScriptXMLHttpRequest对象向服务器发起请求。再由服务器端根据用户的请求进行处理,完成以后向客户端抛出处理结果,用户浏览器再将服务器处理结果,通过DOM结构呈现在HTML页面上。本节将根据AJAX的请求过程一步步进行讲解。

14.2.1 创建XMLHttpRequest对象

AJAX是通过XMLHttpRequest对象向服务器发起请求的。该对象最初是由MicrosoftInternet ExplorerActiveX对象引入,被称为XMLHTTP。而后Mozilla﹑Netscape﹑Safari和其他浏览器也提供了XMLHttpRequest类,只不过它们创建XMLHttpRequest类的方法不同。

对于MicrosoftInterner Explorer浏览器,其版本不同,创建XMLHttpRequest对象的方法也不一样。通常有以下几种方式。

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP.3.0″); //IE3.0IE4.05.0

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP”); //IE6.0

xmlhttp_request = new ActiveXObject(“Microsoft.XMLHTTP”); //IE7.0及以上

其中,上述第一行是在IE6.0之前的版本创建该对象时所使用的方式。第二行为IE6.0版本创建该对象时所使用的方法。第三行为IE6.0版本以上的浏览器创建对象时所使用方法。为了能够更好的兼容不同版本的Internet Explorer浏览器,在实际应用中常常需要根据浏览器版本创建XMLHttpRequest类。

对于MozillaNetscape﹑Safari等浏览器,创建XMLHttpRequest类的方法如下所示。

xmlhttp_request = new XMLHttpRequest();

如果服务器的响应没有XML mime-type header,某些版本的Mozilla浏览器可能无法正常工作。为了解决这个问题,如果服务器响应的header不是text/xml,可以调用如下所示的其他方法修改该header

xmlhttp_request = new XMLHttpRequest();

xmlhttp_request.overrideMimeType(‘text/xml’);

在实际的应用中,AJAX编写在静态的HTML页面中的Script标签以内,也可以编写在独立的JavaScript文件中,在需要使用AJAX的页面加载该JavaScript文件即可。

第14章样章文档下载

PHP从入门到精通, PHP教程 ,

《PHP从入门到精通》目录

2009年9月6日

应网友要求,特在本博展示《PHP从入门到精通》一书的目录与样章。有需要的朋友可了解一下。

目录
第一篇  概述篇
第1章  PHP概述
1.1  PHP简介
1.1.1  什么是PHP
1.1.2  PHP的特点
1.1.3  PHP的应用范围
1.2  WEB服务器概述
1.2.1  什么是Web服务器
1.2.2  Web服务器原理简介
1.2.3  常用的Web服务器
1.3  HTML简介
1.3.1  什么是HTML
1.3.2  HTML标记类型
1.3.3  HTML元素与标签
1.4  小结
第2章  PHP环境的安装与配置
2.1  PHP环境安装
2.1.1  安装Apache服务器
2.1.2  安装PHP
2.1.3  PHP配置文件php.ini简介
2.1.4  查看配置信息
2.2  整合套件
2.2.1  xampp简介
2.2.2  WAMP
2.2.3  Vertrigo Server
2.2.4  其它套件
2.3  开发工具
2.3.1  EditPlus
2.3.2  NotePad++
2.3.3  Eclipse+PDT
2.3.4  ZendStudio for Eclipse
2.3.5  其它开发工具
2.4  第一个PHP程序——Hello,World!
2.5  小结
第二篇  语法篇
第3章  PHP基础
3.1  数据类型
3.1.1  标量数据类型
3.1.2  复合数据类型
3.1.3  特殊数据类型
3.1.4  数据类型的获取
3.2  数据类型的转换
3.2.1  转换为布尔型
3.2.2  转换为整型
3.2.3  转换为浮点型
3.2.4  转换为字符串
3.2.5  转换为数组
3.2.6  转换为对象和资源
3.3  常量与变量
3.3.1  常量
3.3.2  系统常量
3.3.3  变量
3.3.4  变量的作用域
3.3.5  可变变量
3.4  运算符
3.4.1  赋值运算符
3.4.2  算术运算符
3.4.3  字符串运算符
3.4.4  比较运算符
3.4.5  逻辑运算符
3.4.6  位运算符
3.4.7  其它运算符
3.4.8  运算符的优先级
3.5  表达式
3.5.1  表达式的分类
3.5.2  赋值表达式
3.5.3  算术运算表达式
3.5.4  三目运算表达式
3.5.5  其它表达式
3.6  本章实例
3.7  小结
第4章  PHP流程控制
4.1  流程控制概述
4.2  条件控制语句
4.2.1  if控制语句
4.2.2  switch分支语句
4.3  循环控制语句
4.3.1  while循环语句
4.3.2  do…while循环语句
4.3.3  for循环语句
4.4  跳转语句
4.4.1  break跳转语句
4.4.2  continue跳转语句
4.4.3  return跳转语句
4.5  文件包含
4.5.1  使用inlcude和include_once包含文件
4.5.2  使用require和require_once包含文件
4.6  本章实例
4.7  小结
第5章  PHP函数及操作
5.1  函数的定义与调用
5.1.1  函数的调用
5.1.2  函数的定义
5.1.3  函数间传递参数
5.2  引用
5.2.1  什么是引用
5.2.2  对函数、变量的引用
5.2.3  引用的释放
5.3  PHP常用函数
5.3.1  日期时间函数
5.3.2  数学函数
5.3.3  其它常用函数
5.4  本章实例
5.5  小结
第6章  PHP数组及其操作
6.1  概述
6.1.1  一维数组
6.1.2  多维数组
6.2  数组的常用操作
6.2.1  数组的创建
6.2.2  数组的调用与删除
6.2.3  数组的更新
6.2.4  数组的遍历
6.3  数组的查找
6.3.1  顺序查找
6.3.2  二分法查找
6.3.3  使用array_search查找
6.4  数组的排序
6.4.1  递增排序
6.4.2  递减排序
6.4.3  数组排序
6.5  数组的拆分与合并
6.5.1  数组的拆分
6.5.2  数组的合并
6.6  全局数组
6.6.1  $_SERVER[]全局数组
6.6.2  $_ENV[]全局数组
6.6.3  $_GET[]和$_POST[]全局数组
6.6.4  $_FILES[]全局数组
6.6.5  $_COOKIE[]和$_SESSION[]全局数组
6.6.6  $_REQUEST[]全局数组
6.7  本章实例
6.8  小结
第7章  字符操作与正则表达式
7.1  理解字符类型
7.2  字符的显示与格式化
7.2.1  字符的显示
7.2.2  字符的格式化
7.3  常用操作
7.3.1  字符串重复操作—str_repeat
7.3.2  字符串查找操作–strstr
7.3.3  字符串替换操作—str_replace
7.3.4  字符串分解操作—str_split
7.3.5  字符串分解成单词—str_word_count
7.3.6  字符串的长度—strlen
7.3.7  获取子字符串–substr
7.4  正则表达式
7.4.1  正则表达式简介
7.4.2  常见的正则表达式元字符
7.5  正则表达式的常用操作
7.5.1  进行正则表达式的匹配preg_match
7.5.2  进行全局正则表达式的匹配preg_match_all
7.5.3  获得与模式匹配的数组单元preg_grep
7.5.4  转义正则表达式字符preg_quote
7.5.5  执行正则表达式的搜索与替换preg_replace
7.5.6  通过回调函数执行正则表达式的搜索与替换preg_replace_callback
7.5.7  用正则表达式进行字符串分割preg_split
7.6  本章实例
7.7  小结
第8章  PHP错误、异常处理与调试
8.1  PHP错误类型
8.1.1  语法错误
8.1.2  语义错误
8.1.3  逻辑错误
8.1.4  注释错误
8.1.5  运行时错误
8.2  错误处理
8.2.1  错误级别
8.2.2  php.ini对错误处理的设置
8.2.3  错误处理
8.3  PHP异常
8.3.1  异常处理原理
8.3.2  异常处理
8.3.3  扩展的异常处理类
8.3.4  异常的传递与重掷
8.4  PHP程序的调试
8.4.1  打开错误报告
8.4.2  使用ECHO进行调试
8.4.3  使用DIE进行调试
8.5  使用ZendStudio进行调试
8.5.1  使用Eclipse开发PHP的优点
8.5.2  Eclipse和ZendStudio的安装
8.5.3  Zend Debugger的安装
8.5.4  使用ZendStudio进行调试
8.6  本章实例
8.5  小结
第9章  面向对象的PHP
9.1  概述
9.1.1  什么是面向对象
9.1.2  面向对象的特征
9.2  类和对象
9.2.1  类的结构及声明
9.2.2  属性和方法的定义
9.2.3  使用构造函数
9.2.4  使用析构函数
9.2.5  类的实例化
9.2.6  类的继承
9.3  类的常量
9.4  访问方法和属性
9.4.1  访问修饰符
9.4.2  静态属性
9.4.3  静态方法
9.4.4  魔术方法
9.5  本章实例
9.6  小结
第10章  继承、多态与接口
10.1  继承
10.1.1  什么是继承
10.1.2  PHP中实现继承的方法
10.1.3  重载
10.1.4  用final关键字对继承和重载进行限制
10.2  多态
10.2.1  什么是多态
10.2.2  多态的应用设计
10.3  接口
10.3.1  接口的概念
10.3.2  接口的实现
10.3.3  接口的继承
10.4  小结
第三篇  应用篇
第11章  文件系统与操作
11.1  目录操作
11.1.1  打开目录
11.1.2  关闭目录
11.1.3  读取目录
11.1.4  建立目录
11.1.5  删除目录
11.1.6  改变目录
11.2  文件操作
11.2.1  打开文件
11.2.2  关闭文件
11.2.3  读取文件
11.2.4  写入文件
11.2.5  删除文件
11.2.6  复制文件
11.2.7  移动文件和重命名文件
11.3  文件的上传与下载
11.3.1  开启上传功能
11.3.2  POST方法上传
11.3.3  同时上传多个文件
11.3.4  文件的下载
11.4  本章实例
11.5  小结
第12章  PHP交互
12.1  表单数据的提交方式
12.1.1  GET方法
12.1.2  POST方法
12.1.3  表单提交方式的区别
12.2  获取表单数据
12.2.1  获取文本域的数据
12.2.2  获取单选按钮的数据
12.2.3  获取复选框的数据
12.2.4  获取下拉框或列表框的数据
12.3  常用表单数据的验证
12.3.1  用户名的验证
12.3.2  密码验证
12.3.3  日期验证
12.3.4  E-mail验证
12.4  URL编码与解码
12.4.1  编码urlencode函数
12.4.2  解码urldecode
12.5  本章实例
12.6  小结
第13章  Cookie与Session
13.1  概述
13.1.1  Cookie
13.1.2  Session
13.2  Cookie操作
13.2.1  设置Cookie
13.2.2  访问Cookie
13.2.3  删除Cookie
13.2.4  Cookie全局数组
13.3  Cookie应用
13.3.1  登录页面
13.3.2  验证页面
13.3.3  欢迎页面
13.4  Session操作
13.4.1  开始使用Session
13.4.2  Session检测与注销
13.4.3  Session全局数组
13.5  Session应用
13.5.1  登录页面
13.5.2  验证页面
13.5.3  欢迎页面
13.5.4  注销页面
13.6  本章实例
13.7  小结
第14章  PHP与AJAX
14.1  AJAX概述
14.1.1  什么是AJAX
14.1.2  工作原理
14.1.3  优点与缺点
14.2  使用AJAX
14.2.1  创建XMLHttpRequest对象
14.2.2  向服务器发送请求
14.2.3  处理服务器响应
14.3  使用POST方式的AJAX
14.3.1  POST方式
14.3.2  POST实例
14.4  第一个AJAX程序—-Hello, Ajax!
14.4.1  浏览器页面发送请求与处理响应
14.4.2  服务器响应
14.5  本章实例
14.5.1  读取服务器文本文件
14.5.2  三级联动下拉框
14.6  小结
第15章  PHP图像处理
15.1  图像库简介
15.1.1  打开GD库
15.1.2  GD库支持的图像格式
15.2  基本的图像处理
15.2.1  创建图像
15.2.2  设置颜色
15.2.3  生成图像与销毁图像
15.2.4  绘制点线
15.2.5  绘制并填充几何图形
15.2.6  输出文字
15.3  图像处理实例
15.3.1  生成验证码图片
15.3.2  生成缩略图
15.4  本章实例
15.5  小结
第16章  PHP邮件处理
16.1  PHP邮件发送配置
16.1.1  SMTP功能的配置
16.1.2  安装SMTP服务器
16.2  使用mail函数发送邮件
16.2.1  mail函数简介
16.2.2  发送HTML格式的邮件
16.2.3  发送带附件的邮件
16.3  本章实例
16.4  小结
第四篇  数据库篇
第17章  MYSQL数据库的安装与操作
17.1  SQL语言概述
17.2  MySQL的安装与配置
17.2.1  下载
17.2.2  安装和配置
17.3      MySQL的启动与停止
17.3.1  启动
17.3.2  停止
17.4  管理数据库
17.4.1  MySQL的登录与退出
17.4.2  创建数据库
17.4.3  删除数据库
17.4.4  选择数据库
17.4.5  备份与恢复
17.5  操作数据表
17.5.1  创建表
17.5.2  修改表
17.5.3  删除表
17.6  数据类型与视图
17.6.1  MYSQL数据类型
17.6.2  视图
17.7  操作数据
17.7.1  查询语句
17.7.2  插入语句
17.7.3  更新语句
17.7.4  删除语句
17.8  使用phpmyadmin管理mysql数据库
17.8.1  phpmyadmin概述
17.8.2  安装与配置
17.8.3  数据库操作
17.8.4  数据表操作
17.8.5  数据增删改
17.8.6  数据查询
17.8.7  数据的导入导出
17.9  小结
第18章  PHP操作数据库
18.1  PHP操作MySQL数据库
18.1.1  连接MySQL数据库
18.1.2  断开与MySQL的连接
18.1.3  选择和使用MySQL数据库
18.1.4  执行MySQL指令
18.1.5  分析结果集
18.2  管理MYSQL数据库中的数据
18.2.1  添加数据
18.2.2  更新数据
18.2.3  删除数据
18.3  获取数据库信息
18.3.1  获取数据库的信息
18.3.2  获取数据表的信息
18.3.3  获取数据表中列的信息
18.4  PHP操作SQL Server数据库
18.4.1  连接和关闭SQL Server数据库
18.4.2  执行SQL语句
18.4.3  获取结果集
18.5  PHP操作Access数据库
18.5.1  连接和关闭Access
18.5.2  执行SQL语句
18.5.3  获取结果集
18.6  本章实例
18.7  小结
第19章  PHP与XML
19.1  XML简介
19.2  使用SimpleXML进行操作
19.2.1  创建SimpleXML对象
19.2.2  读取对象中的XML数据
19.2.3  XML数据的修改
19.2.4  XML数据的存储
19.3  动态创建XML文档
19.4  小结
第五篇  扩展篇
第20章  MVC模式与PHP开发框架
20.1  MVC概述
20.1.1  何谓MVC
20.1.2  MVC的优点
20.1.3  MVC的不足
20.2  PHP框架——Zend Framework
20.2.1  Zend Framework的特性
20.2.2  Zend Framework的目录结构
20.2.3  Zend Framework的安装
20.2.4  引导文件index.php
20.2.5  页面组织
20.2.6  控制器类Controllers
20.2.7  视图文件
20.2.8  布局
20.3  小结
第21章  PHP面向对象高级编程和设计模式
21.1  重载
21.1.1  属性和方法的重载
21.1.2  使用数组语法访问的重载
21.2  设计模式
21.2.1  设计模式简介
21.2.2  单例模式
21.2.3  策略模式
21.2.4  工厂模式
21.2.5  观察者模式
21.2.6  适配器模式
21.3  小结
第22章  PHP缓存与静态化
22.1  为何使用静态机制
22.2  缓存机制及其应用
22.2.1  缓存机制
22.2.2  缓存机制的应用
22.3  静态机制及实现
22.3.1  由模板生成静态页面
22.3.2  由数据库生成静态页面
22.4  小结
第23章  PEAR与PECL
23.1  概述
23.1.1  PEAR简介
23.1.2  PECL简介
23.2  PEAR的安装与使用
23.2.1  PEAR的安装
23.2.2  查看已安装的包
23.2.3  查看PEAR包的详细信息
23.2.4  PEAR包的安装
22.2.5  PEAR包的升级
22.2.6  PEAR包的删除
22.2.7  PEAR包的使用
23.3  PECL扩展库
23.3.1  下载安装PECL扩展库
23.3.2  使用PEAR编译共享PECL扩展库
23.4  小结
第六篇  实例篇
第24章  留言板
24.1  留言板简介
24.2  数据库设计
24.3  项目实施
24.3.1  系统配置文件
24.3.2  数据库连接
24.3.3  添加留言模块
24.3.4  查看留言模块
24.3.5  显示留言详细内容
24.3.6  登录模块
24.3.7  回复留言模块
24.3.8  删除留言模块
24.3.9  审核留言模块
24.5  小结
第25章  投票系统
25.1  投票系统简介
25.2  数据库设计
25.3  项目实施
25.3.1  系统配置文件
25.3.2  数据库操作类
25.4  投票模块
25.4.1  投票页面
25.4.2  投票处理
25.4.3  投票统计
25. 5  登录模块
25.5.1  登录页面
25.5.2  登录处理
25.5.3  退出模块
25.6  投票主题模块
25.6.1  添加主题
25.6.2  修改投票主题
25.6.3  删除投票主题
25. 7  参数配置模块
25.7.1  添加投票选项
25.7.2  修改投票选项
25.7.3  删除投票选项
25.8  小结
第26章  基于Zend Framework的内容管理系统
26.1  内容管理系统简介
26.2  数据库设计
26.3  项目实施
26.3.1  系统配置
26.3.2  引导文件bootstrap.php
26.3.3  系统初始化
26.3.4  系统默认布局
26.3.5  系统异常处理
26.3.6  系统参数配置
26.4  用户模块
26.4.1  系统开关
26.4.2  注册
26.4.3  登录
26.4.4  退出
26.5  文章模块
26.5.1  管理控制器初始化
26.5.2  添加文章
26.5.3  管理文章
26.5.4  修改文章
26.5.5  审核文章
26.5.6  删除文章
26.5.7  显示文章列表
26.5.8  显示文章内容
26.6  文章类别管理
26.6.1  新增类别
26.6.2  修改类别
26.6.3  删除类别
26.7  文章模板管理
26.7.1  新增模板
26.7.2  修改模板
26.7.3  删除模板
26.5  小结

PHP从入门到精通, PHP教程 ,

书印刷出来了

2009年8月6日

今天接到出版社的通知,我的书—-《PHP从入门到精通》已经印刷完毕,即将上市。

上图为先。

PHP从入门到精通

所属类别
科技图书 >> 计算机 >> 语言及程序设计

作者:陈超 等编著
丛书名:程序员书库
出版日期:2009年8月 书号:978-7-122-05978-9
开本:16 装帧:平 版次:1版1次 页数:432页

以下是这本书的内容简介

本书由浅入深、循序渐进地向读者介绍了Web服务器原理、Web应用程序技术和PHP 5的知识点。每一章在讲解了PHP 5的知识点后,都配有具体的实例,带领读者一步步走进PHP 5的殿堂。
本书共分为六篇26章。从Web服务器基本原理开始,首先讲解PHP应用开发环境的安装与配置、PHP 5语言的编程基础知识及PHP 5面向对象的知识,然后介绍PHP的相关应用,包括PHP操作文件系统、与表单的交互等,再介绍了PHP 5与数据库交互操作知识及PHP 5的一些高级应用,最后通过3个实例,详细讲解了PHP 5在实际开发项目中的应用。
本书适合广大Web网站开发人员、网站管理维护人员和大专院校学生阅读,尤其是有一定Internet/Intranet编程经验的开发人员。

这本书呢,对于想快速入门的朋友应该是一本不错的教程(现在是广告时间:))。因为它基本记录我的PHP历程,希望能够对各位朋友有所帮助。

PHP教程 , , , ,

ZendStudio 7.0发布

2009年8月5日

今天看了一下Gmail,发现Zend来了一封信,一看,原来是最新版的ZendStudio 7发布了。

ZendStudio这可是Zend推出的屡获大奖的PHP专业开发的IDE。既然发布了,去down来看看。

发现其新功能挺不错的,大概有如下更新:

1、基于Eclipse 的最新版本构建(Galileo).]

2、支持php5.3版本

3、Enhanced Source Code Editing(更强的源码编辑)

4、Rapid Application Development with Zend Framework(ZF快速应用开发)

5、Better Performance(更好的性能提升)

喜欢的朋友可以直接进行下载

现在下载的是Early Access(早期版本),可能需求等正式版出来后才更具竞争力!

顺便附带一个试用注册码:

Username: zendstudio.net
Serial Number: 3727234F6095F72034F6095F
大家学习试用可以,不可做为商业用途!由此而引发的相关问题与本博无关!

PHP教程 ,