2014年2月17日星期一

PHP开发环境套件与自定义安装方法介绍 - 叶中奇

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
PHP开发环境套件与自定义安装方法介绍 - 叶中奇  阅读原文»

本文涉及的安装包下载地址,在文章最后附上.

1.在Window下搭建

(apache(iis)+ php + mysql+phpmyadmin) => wamp

2.在Linux

linux +apache+mysql+php =>lamp

我们先看看如何在Windows安装

① 套件软件

appserv 是一个泰国人,该软件把我们需要环境软件打包安装

(apache+mysql(数据库)+php(php开发)+phpmyadmin[这个管理mysql的一个节目操作软件.])

演示如下:

1.准备软件 appserv ,你可以网上下载

2.安装(基本是傻瓜式安装)

安装可以选择安装哪些组件

测试一下我们的套件是否安装ok

在apache的默认路径下,开发一个 hello.html 和 hello.php文件,看看是否能够正常访问.

同时我们可以来管理mysql数据库,到此我们可以确认四大软件安装ok

② 自定义安装

apache+php+mysql+phpmyadmin 自行安装

我们建议大家,安装的时候安装到同一文件夹,利用管理(文件夹不要中文)

安装完一个测试一个.

1. apache

完后 http://locahost

2. 下 php 核心包(用于支持php开发 )

php 核心包的安装就是解压即将

ps:

(1)VC6和VC9的区别?

VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。

VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。

(2)那我们如何选择下载哪个版本的PHP呢?

如果你是在windows下使用Apache+PHP的,请选择VC6版本;
如果你是在windows下使用IIS+PHP的,请选择VC9版本;

(3)那Non Thread Safe和Thread Safe是什么?
Non Thread Safe就是非线程安全;
Thread Safe 是线程安全;
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用

3. 如何将apache 和php 整合

也即是说,怎样才能让apache处理php

在apache 的conf目录下 的 httpd.conf加入如下代码:

LoadModule php5_module ~php安装路径/php5apache2_2.dll

PHPIniDir “~php模块安装路径”

AddType application/x-httpd-php .php .phtml

说明,我们只要包红色的部分,改成实际php 安装的路径即可

把 php.ini-development 文件 改成 php.ini 为什么改,因为我们的php的设置有需要在php.ini修改

在php.ini中可以指定对应的功能模块

;这里我们要指定php的扩展库路径

; On windows:

extension_dir = “C:/myenv/php-5.3.5/ext”

测试看看apache和php是否整合成功

写这样一段代码

<?php

phpinfo();

?>

重新启动 http://localhost/test.php

安装数据库mysql ,这里我们只安装不讲解

1. 准备软件

测试mysql是否可以用

1. 写一段php 代码来测试是否成功!

//目前你看不懂,没关系

<?php

$conn=mysql_connect(“localhost”,”root”,”root”);

if($conn){

echo “连接mysql数据库ok”;

}else{

echo “连接数据库失败”;

}

?>

当我们没有对php进行正确配置的时候,会报

Fatal error: Call to undefined function mysql_connect() in C:\myenv\apache\htdocs\temp.php on line 3

原因: 目前没有启用mysql功能,在php.ini中

extension=php_mysql.dll

extension=php_mysqli.dll

2. 安装一个phpmyadmin(该网站实际可以更好的管理mysql)来看看是否可以使用

把该压缩包直接解压到htdocs目录, 然后可以直接访问

http://localhost/phpMyAdmin/index.php 即可.

到此我们学会 用套餐软件 appserv 来安装,以及使用自定义的方式来搭建自己的php开发环境.

现在,我们来在自己搭建的php开发/运行环境上 安装一个discuz论坛.

① 准备一个discuz论坛代码

② 将其解压到 htdocs 目录下

③ 把discuz的upload文件拷贝到 discuz文件夹下 ,然后删除upload文件夹

④ 修改config.inc.php

// [CH] 以下变量请根据空间商提供的账号参数修改,如有疑问,请联系服务器提供商

$dbhost = ‘localhost’; // 数据库服务器

$dbuser = ‘root’; // 数据库用户名

$dbpw = ‘root’; // 数据库密码

$dbname = ‘discuz’; // 数据库名

$pconnect = 0; // 数据库持久连接 0=关闭, 1=打开

// [CH] 论坛安全设置, 调整以下设置,可以增强论坛的安全性能和防御性能

$adminemail = ‘admin@your.com’; // 系统管理员 Email

$forumfounders = ‘admin’;

⑤ http://localhost/discuz

如果提示 对不起,请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装论坛。则修改

大家可以自己试试搭建php环境并配置好discuz 论坛.

在Microsoft Windows中使用Apache HTTP服务器说明

套件软件

(1)appserv:http://www.appservnetwork.com/

(2)XAMPP:http://www.apachefriends.org/index.html

(3)WampServer:http://www.wampserver.com/

(4)BitNami WAMP Stack:http://bitnami.com/stack/wamp

自定义安装

(1)Apache官方

http://httpd.apache.org/download.cgi

(2)ApacheHaus

http://www.apachehaus.com/cgi-bin/download.plx

(3)Apache Lounge

http://www.apachelounge.com/download/

(4)php

http://windows.php.net/download/

(5)mysql

http://dev.mysql.com/downloads/

(6)phpmyadmin

http://www.phpmyadmin.net/home_page/index.php


本文链接:http://www.cnblogs.com/yezhongqi/p/php-development-environment-integration-and-custom-installation.html,转载请注明。

C#设计模式之装饰者模式(Decorator Pattern) - Loui  阅读原文»

1.概述

  装饰者模式,英文名叫做Decorator Pattern。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

2.特点

  (1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。
  (2) 装饰对象包含一个真实对象的引用(reference)
  (3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。
  (4) 装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。在面向对象的设计中,通常是通过继承来实现对给定类的功能扩展。
3.应用范围
  1. 需要扩展一个类的功能,或给一个类添加附加职责。
  2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。
  3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。
  4. 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
4.优点
  1. Decorator模式与继承关系的目的都是要扩展对象的功能,但是Decorator可以提供比继承更多的灵活性。
  2. 通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。(这一条更能体现)
5.缺点
  1. 这种比继承更加灵活机动的特性,也同时意味着更加多的复杂性。
  2. 装饰模式会导致设计中出现许多小类,如果过度使用,会使程序变得很复杂。
  3. 装饰模式是针对抽象组件(Component)类型编程。但是,如果你要针对具体组件编程时,就应该重新思考你的应用架构,以及装饰者是否合适。当然也可以改变Component接口,增加新的公开的行为,实现“半透明”的装饰者模式。在实际项目中要做出最佳选择
6.设计原则
  1. 多用组合,少用继承。
  利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。
  2. 类应设计的对扩展开放,对修改关闭。
8.模式简化(最后会给出2种写法仅供参考)
  1. 如果只有一个Concrete Component类而没有抽象的Component接口时,可以让Decorator继承Concrete Component。
  2. 如果只有一个Concrete Decorator类时,可以将Decorator和Concrete Decorator合并。
9.代码示例
  (1)抽象接口
/// <summary>
/// 定义Component对象接口
/// </summary>
public abstract class Component
{
public abstract void Operation();//一个抽象的职责
}
/// <summary>
/// 具体对象
/// </summary>
class ConcreteComponent : Component
{
public override void Operation()
{
Console.WriteLine(
"具体对象的操作");
}
}
//装饰者抽象类
abstract class Decorator : Component
{

protected Component component;

public void SetComponent(Component component)
{

this.component = component;

}

public override void Operation()
{
if (component != null)
{
component.Operation();
}
}
}

class ConcreteDecoratorA : Decorator
{

public override void Operation()
{

base.Operation(); //首先运行原Compnent的Operation(),再执行本类的功能,如AddedBehavior,相当于对原Component进行了装饰


Console.WriteLine(
"具体装饰对象A的操作");
}
}
class ConcreteDecoratorB : Decorator
{


public override void Operation()
{

base.Operation(); //首先运行原Compnent的Operation(),再执行本类的功能,如AddedBehavior,相当于对原Component进行了装饰


Console.WriteLine(
"具体装饰对象B的操作");
}
}

(2)无抽象接口

public class Car
{
public virtual void Description()
{
Console.Write(
"基本");
}
}

public class ESPDecorator : Car
{
Car car;
阅读更多内容

没有评论:

发表评论