Chinaunix首页 | 论坛 | 博客
  • 博客访问: 897994
  • 博文数量: 215
  • 博客积分: 10062
  • 博客等级: 上将
  • 技术积分: 2235
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-01 13:21
文章分类

全部博文(215)

文章存档

2012年(1)

2011年(24)

2009年(16)

2008年(91)

2007年(83)

我的朋友

分类:

2008-07-03 09:30:44

1.搭建开发环境

 

 

搭建Windwos下的Apache+PHP+MYSQL开发环境

 

一.下载安装软件

1)  AppServ 2.5.10安装程序.(AppServ是一个开源工具组合包) 包含了Apache 2.2.8 PHP 5.2.6 MySQL 5.0.51b phpMyAdmin-2.10.3 工具。

下载地址:

 

2)  下载后,执行appserv-win32-2.5.10.exe安装程序.

2.1)安装界面如下

 

 2.2点击next按钮。

 

2.3点击[I Agree]按钮。

2.4选择你想要安装的目录后,(如:我安装到D盘),点击next按钮。

 

 

 

2.5选择没有安装的组件包(如:我这里只选择了apache ,php),点击next按钮。

   phpMyAdmin是用来管理MYSQL数据库的工具。

 

 

2.6输入你的域名、Email地址、端口号。(如:端口为默认端口号:80),点击next按钮。

2.7正在安装。。

2.8安装已完成,选择Finish完成按扭,安装完成。

 

 

 

二.测试安装环境是否成功。

 

 

 

安装成功显示页面如下:

!--[if !vml]-->

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

配置WEB项目发布目录

 

般安装默认发布目录为所选择的安装目录下如:D:\AppServ\www

 

怎样修改默认发布目录?

方法:

1)找到Apache配置文件httpd.conf打开。如在:D:\AppServ\Apache2.2\conf\httpd.conf

  2)找到DocumentRoot "D:/AppServ/www"

 改为你想要发布的目录”,即可。

  主意:DocumentRootDirectory设置必须一致。

  3)保存设置。

  4)重启Apache即可。

 

三.怎样修改端口号吗?

1)找到Apache配置文件httpd.conf打开。如在:D:\AppServ\Apache2.2\conf\httpd.conf

  2)找到Listen 80 改为 其它端口号 如:Listen 8088

  3)保存设置。

  4)重启Apache即可。

 

 

四.不能操作MYSQL数据库怎么办吗?

1)找到PHP配置文件,一般在windows目录下php.ini

2) 打开找到如下内容把分号去掉即可。

  ;extension=php_mysql.dll

  ;extension=php_mysqli.dll

 

  extension=php_mysql.dll

  extension=php_mysqli.dll

3)保存

4)重启apache



PHP5面像对像新特征

 

一. 加了访问权限的控制:使用private/public/protected的特征

 1public 可以无限限制地访问,这个是PHP5新增的功能,以前的版本所有的方法和属性都是public类型。

 

2) private 只在类的内部可见,类中的任何成员和类的实例都可以访问private成员,类之外在都不能改写或者读取private成员的值,也不能调用private方法,所继承的子类也不能访问父类中的private成员和方法。

 

3) protected 只能被同类中的所有方法和继承出的类中所有方法访问到。除此之外,不能被方问。

 

实例如下:

  

   class parent_class{

        private $name;

        private $address;

        protected $phone;

      

     public function getAddress(){

           return "guili";

        }

       

     private  function getName(){

           return "guili jnt ";

        }

    

     protected function getPhone(){

         return "13966688";

     }

 

 

     //在内部调用protectd 方法

     function getPhone1(){

         return $this->getPhone();

     }

 

 

    }

 

 

 

  class child_class extends parent_class{

        var $sex;

        var $address;

        function getSex(){

          //echo "call parent address=".parent::getAddress();

           return "girl";

        }

 

        //在子类调用protectd 方法

        function getChildPhone(){

            echo "call parent phone=".parent::getPhone();

            echo "call parent phone1=".parent::getPhone1();

        }

   } 

 

  $obj = new child_class();

  echo "parent address=".$obj->getAddress();

  echo "child sex=".$obj->getSex();

 

  echo  $obj->getChildPhone();

 

  //不能调用

  //echo "parent name=".$obj->getName();

  //echo "parent phone=".$obj->getPhone();

  

?>

 

 

二.静态属性和方法

1)静态属性的访问只能用self::属性名,而不是this->属性名。

2) 外部访问静态方法类名::静态方法名。

 

   class static_class{

        private $name;

        private static $count=0;

 

      

       function __construct(){

            self::$count++;

       }      

 

       static function getCount(){

           return "count=".self::$count;

        }

 

    }

 

    

    $obj  = new static_class();

    $obj1 = new static_class();

   

    echo "static function ".static_class::getCount();

 

?>

 

 

三.使用构造和析构函数 __construct __destruct

 1__construct 创建对像时会被调用。

 2) __destruct  对像被销毁时被调用。

 

实例如下:

  

   class static_class{

        private $name;

        private static $count=0;

 

     

       function __construct(){

            self::$count++;

       }      

 

       static function getCount(){

           return "count=".self::$count;

        }

 

       function __destruct(){

           echo " __destruct count=".self::$count--;

       }

    }

    $obj  = new static_class();

    $obj1 = new static_class();

    echo "static function ".static_class::getCount();

?>

 

 

.

 

 

 

四.使用__clone克隆对像

1)跟据一个对像完全克隆出一个一模一样的对像,两个对像互不干扰。

2__clone可以没有参数,它自动包含$this$that两个指针,需要求意的是,$this指向复制本,$that指向原本。

   class static_class{

       private $name;

       function getName(){

           return "name=jnt";

       }

    }

    $obj  = new static_class();

    $obj1 = clone $obj;

 

    echo "obj=".$obj->getName();

 

    echo "obj1 clone=".$obj->getName();

?>

 

 

五. 加入了接口和抽象类的概念,interface/abstract,可惜的是类的继承还是树形的单继承。

 

六.使用__call() 处理调用错误。

如果调用一个对像中不存在的方法时,就会自动调用__call()方法。

   class static_class{

        private $name;

       function getName(){

           return "name=jnt";

       }

 

       function __call($function_name, $args){

            print " function not  exist!  ";

       }

    }

    $obj  = new static_class();

    echo $obj->getName1();

?>

 

 

 

 

七.提供了一个__autoload();函数,用来自动的加载类声明文件

  

    //自动加载文件

    function __autoload($class_name){

           include("$class_name".".php");

    }

    

    //实例化对像时,如果类不在存,则调用__autoload().

    $obj  = new static_class();

    echo $obj->getName1();

 

?>

 

八.使用__get()__set()函数。

1)__set()给类中的某些变量值赋值。

2)__get()返回类中的某些变量值。

 

   class static_class{

       private $userName;

       function __get($property_name){

 

           if(isset($this->$property_name)){

               return $this->$property_name;

           }else{

               return "";

           }

       }

       function __set($property_name, $value){

           $this->$property_name=$value;

       }

    }

    $obj  = new static_class();

     $obj->__set("userName","hello jnt");

     echo "name=". $obj->__get("userName");

 

?>

 

 

 

 

 

 

九.其它

__sleep();        睡眠的时候用

__weekup();      反序列的时候用

 

默认的object的赋值采用了应用的方式,如:

$object2 = $object1

$object2 得到的是$object1的引用,不是在内存中copy副本

 

 

 



 

 

 

 

 

 

PHP怎样访问MYSQL数据库?

 

 

首先先了解一下PHP操作MYSQL的常用函数.

 

.连接数据函数

  1) mysql_connect (主机名(IP), 登录用户名, 登录密码) 成功:返回一个唯一连接标识,失败:返回false;

  2) mysql_pconnect(主机名(IP), 登录用户名, 登录密码) 成功:返回一个唯一连接标识,失败:返回false;

 

 区别: mysql_connect() 每次请求都会创建一个和多个新的连接,请求结束后关闭这些连接。

    mysql_pconnect()请求时新建一个连接,但是在请求结束后不会关闭连接,会把连接保存在连接池中,这样一个并发的请求还能继续使用这个连接。

   p就是单词persistent(永久的)的首字母.

  

                                               

     //连接数据库实例

    $conn = mysql_connect("192.168.0.225", "root", "root");

    if($conn){

      echo " --connect ok.";

    }else{

      echo " --connect no.";

    }

  ?>

 

 

 

.选择数据库函数

   mysql_select_db("数据库名", 连接标识);

 

   数据库已经连接了,接下来我们就可以选择数据库了,实例如下:

  

      $selectDB=mysql_select_db("jp_union", $conn);

      if($selectDB){

       echo " --select db ok.";

      }else{

       echo " --select db no.";

      }

   ?>

 

 

 

 

.查询记录函数

   mysql_query(sql语句, 连接标识); 执行成功:返回一个结果标识,否则返回:false;

  

   实列如下:

    

        $sql = "select * from user ";

        $result = mysql_query($sql, $conn);

        if($result){

        echo " --query data ok.";

        }else{

        echo " --query data no.";

        }

     ?>

  

 

.获取记录函数

(1) array mysql_fetch_array ($result,[result_type]); 返回根据从结果集取得的行生成的数组,如

果没有更多行则返回 FALSE

result_type返回类型参数有:MYSQL_NUMMYSQL_ASSOCMYSQL_BOTH

 

实例如下:

      

    //返回类型参数:MYSQL_NUM

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {

        printf ("ID: %s  Name: %s", $row[0], $row[1]);

    }

 

    //返回类型参数:MYSQL_ASSOC

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);

    }

 

    //返回类型参数:MYSQL_BOTH

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {

        printf ("ID: %s  Name: %s", $row[0], $row["name"]);

    }

 

 

    mysql_free_result($result);

?>    

 

 

(2) PHP5.0新增返回对像的结果集.

object mysql_fetch_object ( resource $result [, string $class_name [, array $params ]] );

返回根据从结果集取得的行生成的对像结果集,如果没有更多行则返回 FALSE

 

 

实例如下:

//以对像的方式获取字段值

while ($row = mysql_fetch_object($result)) {

    echo $row->id;

    echo $row->userId;

}

 

mysql_free_result($result);

?>

 

 

 

.执行SQL语句函数。

  mysql_query(sql语句, 连接标识); 执行成功:返回一个影响记录数,否则返回:false;

  

  实列如下:

 

        $sql ="insert into jnt_test(createDate,statDate,sid) values(now(), '2008-06-24',100008)";

        $result = mysql_query($sql, $conn);

        if($result){

        echo " --execute data ok.";

        }else{

        echo " --execute error ";

        }

  ?>

 

 

 

. 综合实例

 

1)创建一个共用的数据操作类:文件名为connection.php

 

 class connect{

      private $conn;

      private $hostName     = "192.168.0.225";

      private $userName     = "root";

      private $userPassword = "root";

      private $dataBaseName = "jp_union";

     

     

      function __construct(){

              if($this->getConnection()){

                     print("\nconnect succeed..\n");    

              }else{

                     print("connect no..\n"); 

              }    

      }

     

      /*

       * 获取数据库连接

       * */

      function getConnection(){          

             //连接数据库

             $this->conn = mysql_connect($this->hostName, $this->userName, $this-

>userPassword)

             or die('连接数据库失败!');

            

             //选择数据库

             mysql_select_db($this->dataBaseName,$this->conn); //选择数据库       

           return true;             

      }

     

      /*

       * 查询数据

       * */

      function executeQuery($sql){

             if(empty($sql) or empty($this->conn)){

                    return false;

             }           

             $result = mysql_query($sql, $this->conn) or print("执行executeQuery

:".$sql);

             if((!$result) or (empty($result))){

                 return false;

          }

         

          $i=0;

          $rs = array();

          while( $row =mysql_fetch_object($result)){        

                 $rs[$i++]= $row;            

          }

          mysql_free_result($result);

              return $rs;     

      }

     

     

      /*

       * 查询数据

       * */

      function executeQuery1($sql){

             if(empty($sql) or empty($this->conn)){

                    return false;

             }           

             $result = mysql_query($sql, $this->conn) or print("执行executeQuery出错:".$sql);

             if((!$result) or (empty($result))){

                 return false;

          }

          $i=0;

          $rs = array();

          while( $row =mysql_fetch_array($result)){

                 $rs[$i++]= $row;            

          }

          mysql_free_result($result);

              return $rs;

             

      }

           

           

      /*

       * 执行SQL语句

       * */

      function executeUpdate($sql){

             if(empty($sql) or empty($this->conn)){

                    return false;                

             }           

             $result = mysql_query($sql, $this->conn) or print("执行executeUpdate出错:".$sql);            

             return $result;

      }

 

 

      function __destruct() {              

           //释放

               mysql_close($this->conn);

               print("close connection\n");

       }

      

 }

?>

 

 

 

 

2)操作: 查询、增加、修改、删除

 

 

 

//1.包含公共数据库类文件

require("connection.php");

 

//2.创建类对像

$obj = new connect();

 

//删除记录

$sql = "delete from jnt_test where sid=10088 ";

if($obj->executeUpdate($sql)){

       echo "

delete ok..

";

}else{

    echo "

delete fail..

";

}

 

 

 

//增加记录

$sql = "insert into jnt_test(createDate, statDate, sid,pv) values(now(), '2008-06-25',

10088,1000)";

if($obj->executeUpdate($sql)){

       echo "

insert ok..

";

}else{

    echo "

insert fail..

";

}

 

 

//修改记录

$sql = "update jnt_test set pv=9999999 where sid=10088 ";

if($obj->executeUpdate($sql)){

       echo "

update ok..

";

}else{

    echo "

update fail..

";

}

 

 

 

//执行查询 返回对像数组

$result = $obj->executeQuery("select * from jnt_test ");

 

//foreach只能用于遍历数组 数组-->变量 首先将数组下标为1的值给指定的变量后,下标自动下移。

foreach($result as $row ){

       echo "
id=".$row->id." createDate=".$row->createDate." statDate=".$row-

>statDate."
";

}

 

 

echo "



";

//执行查询 返回数组 可以用下标和字段名获取值

$result1 = $obj->executeQuery1("select * from jnt_test limit 0,2 ");

foreach($result1 as $row1 ){

       echo "
id=".$row1['id']." createDate=".$row1['createDate']." statDate=".$row1

['statDate']."
";

}

 

echo "



";

foreach($result1 as $row1 ){

       echo "
id=".$row1[0]." createDate=".$row1[1]." statDate=".$row1[2]."
";

}

 

?>

 

 

 

 

 

 

PHP开发工具的安装与配置

 

 

一.   PHPEclipse插件安装与配置

1.安装:

1)      首先下载phpeclipse-1.1.8最新插件包.

下载地址:

  

2)      下载插件包完成后,解压,然后把解压出来的文件夹都复制到Eclipse主目录的覆盖plugins目录即可。如:如:E:\eclipse3.3\

3)      重启Eclipse完成。

 

注意项:

1)  如果启动Eclipse没有看到PHP Project新建功能,说明新的插件没有加载,怎么办呢?

解决方法:

1)在开始菜单à运行->对话框输入E:\eclipse3.3\eclipse.exe –clean 执行即可。

说明:–clean参数是重新加插件包。

 

   

2.配置:

  安装好PHPEclipse插件包后就可以在Eclipse开发工具中配置PHP开发执行环境了。

1)首先确保你的PHP WEB发布根目录的位置。

2)运行eclipse.

3)选择Window菜单的Preferences功能项,如下图。

 

 

 

 

 

 

 

 

 

 

4) 弹出的对话框中选择PHP的安装目录,如:C:\AppServ\php5\php.exe  如下图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)      再设置Apache的安装目录和配置文件如:下图.

1) C:\AppServ\Apache2.2\bin\httpd.exe

2) C:\AppServ\Apache2.2\conf\httpd.conf

 

5)      配置完后,点击[OK]按钮即可。完成配置.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二.呵呵,开始进入我们第一个PHP程序的开发HelloWorld

1) 运行Eclispe.

2) 运行 apache.

3) 新建PHP工程名,输入工程名为HelloWorld,点击[Finish]完成 如下图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 工程创建好后,新建PHP文件,输入名为index.php后,点击[Finish]完成 如下图

 

5) index.php文件内输入如下内容:

/*

 * Created on Jun 24, 2008

 *

 * To change the template for this generated file go to

 * Window - Preferences - PHPeclipse - PHP - Code Templates

 */

 echo "hello world ";

?>

 

 

 

 

6)      运行我们的每一个PHP程序

IE浏览器中输入测试地址: 如下图。

 

 

 

 

7) OK 在这里我们现在就可以编写PHP程序了,简单吧。。

 

 

 

 

 

.安装Zend Studio for Eclipse 6.0.0开发工具

 

 一.Zend Studio for Eclipse 6.0.0开发工具

     1)下载Zend Studio for Eclipse 6.0.0开发工具 下载地址:

     2)下载后运行ZendStudioForEclipse-6_0_0.exe

     3)跟据提示安装即可。

     3)运行ZendStudio.exe

     3)点击菜单:help/reigster输入注册码

       用户名:PHPER

       注册码:4784D9D0086669570000

       用户名:Faceker.com

       注册码:02251FE3126660400000

     4)安装完成。

 

 

 

 二.用Zend Framework框架开发一个简单的项目列子。

 

  1.运行ZendStudio.exe

  2.创建一个Zend Framework Project工程

  3.生成的目录结构如下:

     1.基本目录架构

       |-/application

       |-/controllers   (MVCC)

       |-/models    (MVCM)

       |-/views       (MVCV)

          |-/filters

          |-/helpers

          |-/scripts

   |-/html

       |-/images     (存放图片)

       |-/scripts    (存放script)

       |-/styles    (存放CSS)

       |-.htaccess   (配合url rewrite之资料)

       |-index.php   (bootstrap file)

   |-/library

       |-/Zend       (这个是ZFlibrary,可从ZF网站下载)

    

 

 

PHP开发工具的安装与配置

 

 

一.   PHPEclipse插件安装与配置

1.安装:

1)      首先下载phpeclipse-1.1.8最新插件包.

下载地址:

  

2)      下载插件包完成后,解压,然后把解压出来的文件夹都复制到Eclipse主目录的覆盖plugins目录即可。如:如:E:\eclipse3.3\

3)      重启Eclipse完成。

 

注意项:

1)  如果启动Eclipse没有看到PHP Project新建功能,说明新的插件没有加载,怎么办呢?

解决方法:

1)在开始菜单à运行->对话框输入E:\eclipse3.3\eclipse.exe –clean 执行即可。

说明:–clean参数是重新加插件包。

 

   

2.配置:

  安装好PHPEclipse插件包后就可以在Eclipse开发工具中配置PHP开发执行环境了。

1)首先确保你的PHP WEB发布根目录的位置。

2)运行eclipse.

3)选择Window菜单的Preferences功能项,如下图。

 

 

 

 

 

 

 

 

 

 

4) 弹出的对话框中选择PHP的安装目录,如:C:\AppServ\php5\php.exe  如下图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)      再设置Apache的安装目录和配置文件如:下图.

1) C:\AppServ\Apache2.2\bin\httpd.exe

2) C:\AppServ\Apache2.2\conf\httpd.conf

 

5)      配置完后,点击[OK]按钮即可。完成配置.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二.呵呵,开始进入我们第一个PHP程序的开发HelloWorld

1) 运行Eclispe.

2) 运行 apache.

3) 新建PHP工程名,输入工程名为HelloWorld,点击[Finish]完成 如下图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 工程创建好后,新建PHP文件,输入名为index.php后,点击[Finish]完成 如下图

 

5) index.php文件内输入如下内容:

/*

 * Created on Jun 24, 2008

 *

 * To change the template for this generated file go to

 * Window - Preferences - PHPeclipse - PHP - Code Templates

 */

 echo "hello world ";

?>

 

 

 

 

6)      运行我们的每一个PHP程序

IE浏览器中输入测试地址: 如下图。

 

 

 

 

7) OK 在这里我们现在就可以编写PHP程序了,简单吧。。

 

 

 

 

 

.安装Zend Studio for Eclipse 6.0.0开发工具

 

 一.Zend Studio for Eclipse 6.0.0开发工具

     1)下载Zend Studio for Eclipse 6.0.0开发工具 下载地址:

     2)下载后运行ZendStudioForEclipse-6_0_0.exe

     3)跟据提示安装即可。

     3)运行ZendStudio.exe

     3)点击菜单:help/reigster输入注册码

       用户名:PHPER

       注册码:4784D9D0086669570000

       用户名:Faceker.com

       注册码:02251FE3126660400000

     4)安装完成。

 

 

 

 二.用Zend Framework框架开发一个简单的项目列子。

 

  1.运行ZendStudio.exe

  2.创建一个Zend Framework Project工程

  3.生成的目录结构如下:

     1.基本目录架构

       |-/application

       |-/controllers   (MVCC)

       |-/models    (MVCM)

       |-/views       (MVCV)

          |-/filters

          |-/helpers

          |-/scripts

   |-/html

       |-/images     (存放图片)

       |-/scripts    (存放script)

       |-/styles    (存放CSS)

       |-.htaccess   (配合url rewrite之资料)

       |-index.php   (bootstrap file)

   |-/library

       |-/Zend       (这个是ZFlibrary,可从ZF网站下载)

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



阅读(3369) | 评论(0) | 转发(0) |
0

上一篇:lucene入门

下一篇:唐骏演讲的经典内容

给主人留下些什么吧!~~