Chinaunix首页 | 论坛 | 博客
  • 博客访问: 420643
  • 博文数量: 117
  • 博客积分: 5235
  • 博客等级: 大校
  • 技术积分: 1775
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-12 15:51
文章分类

全部博文(117)

文章存档

2012年(9)

2011年(2)

2010年(21)

2009年(13)

2008年(72)

我的朋友

分类:

2008-12-24 17:05:48

背景:
    自己唯一使用过的web server端脚本。一直都没个总结真是太糟糕了。

正文:

php
1. 超全局变量
$_SERVER 是一个特殊的 PHP 保留变量,它包含了 web 服务器提供的所有信息,被称为超全局变量。是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。
:
<?php
    echo $_SERVER['HTTP_USER_AGENT'];
    echo $_SERVER['SERVER_ADDR'];
?>
2. 函数
2.1 基本语法
<?php
function foo($arg_1, $arg_2, ..., $arg_n){
    echo "Example function.\n";
    return $retval;
}
?>
2.2 有条件的函数
<?php
$makefoo=true;
if ($makefoo) {
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}
//只能随着$makefoo的状态而选择性地调用

?>
2.3 内嵌函数
<?php
function foo()
{
  function bar()
  {
    echo "I don't exist until foo() is called.\n";
  }
}
/* We can't call bar() yet
   since it doesn't exist. */

foo();
/* Now we can call bar(),
   foo()'s processesing has
   made it accessable. */

bar();
?>
<?php
// PHP 中的所有函数和类都具有全局域,可以在内部定义外部调用,反之亦然。

// PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。

// 函数名是非大小写敏感的,不过在调用函数的时候,通常使用其在定义时相同的形式。

?>
2.4 递归函数
<?php
//不应超过100-200层

function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}
?>
3. include_once()
<?php
//避免多次include

include_once("a.php"); // this will include a.php

include_once("A.php"); // this will include a.php again on Windows! (PHP 4 only)

?>
4. 函数的参数
4.1 通过引用传递参数
<?php
function add_some_extra(&$string)
{
    $string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str; // outputs 'This is a string, and something extra.'

?>
4.2 默认参数
<?php
function makecoffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee("espresso");
//PHP 还允许使用数组和特殊类型 NULL 作为默认参, 默认值必须是常量表达式, 请注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧, 自 PHP 5 起,默认值可以通过引用传递。

?>
4.3 可变长度参数列表
PHP 4 及更高版本已经在用户自定义函数中支持可变长度参数列表。这个真的很简单,用 func_num_args(),func_get_arg(),和 func_get_args() 函数。
5. 返回值
值通过使用可选的返回语句返回。任何类型都可以返回,其中包括列表和对象。
<?php
//返回数组

function small_numbers()
{
    return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?>
<?php
//返回引用,注意函数定义时的"&"

function &returns_reference()
{
    return $someref;
}

$newref =& returns_reference();
?>
6. 引用
6.1 what is 引用
在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针,替代的是,引用是符号表别名。注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身――变量名是目录条目,而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的 hardlink。
//很像c++中的引用
6.2 引用不是什么
引用不是指针,而是别名。
6.3 引用的传递

<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here

//注意在函数调用时没有引用符号――只有函数定义中有。

/*
 以下内容可以通过引用传递:

    * 变量,例如 foo($a)
    * New 语句,例如 foo(new foobar())
    * 从函数中返回的引用
任何其它表达式都不能通过引用传递,结果未定义。
*/

?>
6.4 从函数中返回的引用

<?php
function &find_var($param)
{
    /* ...code... */
    return $found_var;
}

$foo =& find_var($bar);
$foo->x = 2;
// Note: 和参数传递不同,这里必须在两个地方都用 & 符号――指出返回的是一个引用,而不是通常的一个拷贝,同样也指出 $foo 是作为引用的绑定,而不是通常的赋值。

// 用处不太大

?>
6.5 引用定位
6.5.1
<?php
$var='welcome';
function a(){
    global $var;    //里面的$var是外面的引用,别名,尽管名字一样,但范围不同

    $var =& $GLOBALS["var"];
    //等同

}
?>
6.5.2
<?php
$this
//在一个对象的方法中,$this 永远是调用它的对象的引用。

?>

7. 类型
7.1 种类
PHP 支持八种原始类型。

四种标量类型:

    * boolean(布尔型)
    * integer(整型)
    * float(浮点型,也作“double”)
    * string(字符串)

两种复合类型:

    * array(数组)
    * object(对象)

最后是两种特殊类型:

    * resource(资源)
    * NULL
7.2 检测
如果想查看某个表达式的值和类型,用 var_dump()。 如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。要查看某个类型,不要用 gettype(),而用 is_type 函数。

<?php
$bool = TRUE; // a boolean

$str = "foo"; // a string

$int = 12; // an integer


echo gettype($bool); // prints out "boolean"

echo gettype($str); // prints out "string"


// If this is an integer, increment it by four

if (is_int($int)) {
    $int += 4;
}

// If $bool is a string, print it out

// (does not print out anything)

if (is_string($bool)) {
    echo "String: $bool";
}
?>
7.3 boolean型
要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。

<?php
$foo = true; // assign the value TRUE to $foo

$foo2 = false;
?>
 当转换为 boolean 时,以下值被认为是 FALSE:

    * 布尔值 FALSE
    * 整型值 0(零)
    * 浮点型值 0.0(零)
    * 空白字符串和字符串 "0"
    * 没有成员变量的数组
    * 没有单元的对象(仅适用于 PHP 4)
    * 特殊类型 NULL(包括尚未设定的变量)

所有其它值都被认为是 TRUE(包括任何资源)。
<?php
var_dump((bool) ""); // bool(false)

var_dump((bool) 1); // bool(true)

var_dump((bool) -2); // bool(true)

var_dump((bool) "foo"); // bool(true)

var_dump((bool) 2.3e5); // bool(true)

var_dump((bool) array(12)); // bool(true)

var_dump((bool) array()); // bool(false)

var_dump((bool) "false"); // bool(true)

?>
8.
8.1 简单的类定义
<?php
class SimpleClass
{
    // 成员声明

    public $var = 'a default value';

    // 方法声明

    public function displayVar() {
        echo $this->var;
    }
}
?>
<?php
class SimpleClass
{
    // 无效的类成员定义:不能以表达式为默认值

    public $var1 = 'hello '.'world';
    public $var2 = <<<EOD
hello world
EOD;
    public $var3 = 1+2;
    public $var4 = self::myStaticMethod();
    public $var5 = $myVar;

    // 正确的类成员定义:

    public $var6 = myConstant;
    public $var7 = self::classConstant;
    public $var8 = array(true, false);


}
?>
8.2 使用
<?php
$instance = new SimpleClass();
?>
8.3 对象赋值
<?php
$assigned = $instance;
$reference =& $instance;

$instance->var = '$assigned will have this value';

$instance = null; // $instance and $reference become null


var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
输出为:
NULL
NULL
object(SimpleClass)#1 (1) {
   ["var"]=>
     string(30) "$assigned will have this value"
}
8.4 继承
extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被覆盖,除非父类定义方法时使用了 final 关键字。可以通过 parent:: 来访问被覆盖的方法或成员。
<?php
class ExtendClass extends SimpleClass
{
    // Redefine the parent method

    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>
8.5 构造函数
 如果子类中定义了构造函数则不会暗中调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()
为了实现向后兼容性,如果 PHP 5 在类中找不到 __construct() 函数,它就会尝试寻找旧式的构造函数,也就是和类同名的函数。因此唯一会产生兼容性问题的情况是:类中已有一个名为 __construct() 的方法,但它却又不是构造函数。
<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}

$obj = new BaseClass();
$obj = new SubClass();
?>
8.6 析构函数,也支持
8.7 访问控制
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
8.7.1 对类成员的访问控制
类成员都必须使用关键字public、protected 或 private 进行定义, 不能省略
8.7.2 对方法的访问控制
类中的方法都必须使用关键字public、protected 或 private 进行定义。如果没有设置这些关键字,则该方法会被设置成默认的 public。
8.8 :: 操作符
表态成员与方法,明确调用父类被覆盖的方法
<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // 覆盖父类中的方法

    public function myFunc()
    {
        // 但仍然可以调用已被覆盖的方法

        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>
8.9 stitic
<?php
class Foo {
    public static $name="jack";
    public static function aStaticMethod() {
        // ...

    }
}
Foo::$name;
Foo::aStaticMethod();
?>
8.10 constant in class
不可改变的表态值
<?php
class MyClass
{
    const constant = 'constant value';    //不用带"$"

    function showConstant() {
        echo self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n";

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n";
?>
9. mysql 使用
9.1 连接,查询
<?php
// 连接,选择数据库

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');

// 执行 SQL 查询

$query = 'SELECT * FROM my_table';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// 用 HTML 显示结果

echo "

\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t
\n";
    foreach ($line as $col_value) {
        echo "\t\t
\n";
    }
    echo "\t
\n";
}
echo "
$col_value
\n";

// 释放结果集

mysql_free_result($result);

// 关闭连接

mysql_close($link);
?>
9.2 sql 语句与php语句混用
<?php
"select count(*) from table_log where time_log >= '".$_POST["startTime"]."' and time_log <= '".$_POST["endTime"]."' and action='".$_POST["operation"]."'";
//变量要放入''中

?>
10. 数组中的最大最小值
<?php
    $arr=array(4, 5, 10, 34);
    echo max($arr);
    echo min($arr);
?>
11. 获取随机日期
<?php
function getRandDT(){
    $hour=rand(10, 23);
    $month=rand(10, 12);
    $day=rand(10, 30);
    $dt="2008-".$month."-".$day." ".$hour.":00:00";
    return $dt;
}
?>
12. session 的使用
<?php
session_start();    //要写在没有输出的靠前部分

$_SESSION["varName"];    //以这样的形式去赋值或读取

unset($_SESSION['varName']);    //unset特定的session

session_unset();    //unset所有的session

session_destroy();    //remove所有的session,一般用于logout

?>
13. 日期加减
<?php
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
//Note: 由于夏令时的缘故,这种方法比简单地在时间戳上加减一天或者一个月的秒数更可靠。

?>
14. 日期与时间
14.1 format
<?php
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 几日,二位数字,若不足二位则前面补零;: "01""31"
D - 星期几,三个英文字母;: "Fri"
F - 月份,英文全名;: "January"
h - 12 小时制的小时;: "01""12"
H - 24 小时制的小时;: "00""23"
g - 12 小时制的小时,不足二位不补零;: "1""12"
G - 24 小时制的小时,不足二位不补零;: "0""23"
i - 分钟;: "00""59"
j - 几日,二位数字,若不足二位不补零;: "1""31"
l - 星期几,英文全名;: "Friday"
m - 月份,二位数字,若不足二位则在前面补零;: "01""12"
n - 月份,二位数字,若不足二位则不补零;: "1""12"
M - 月份,三个英文字母;: "Jan"
s -;: "00""59"
S - 字尾加英文序数,二个英文字母;: "th""nd"
t - 指定月份的天数;: "28""31"
U - 总秒数
w - 数字型的星期几,如: "0" (星期日)"6" (星期六)
Y - 年,四位数字;: "1999"
y - 年,二位数字;: "99"
z - 一年中的第几天;: "0""365"
?>
14.2 有用的应用
14.2.1 strtotime()
<?php
//将任何英文文本的日期时间描述解析为 UNIX 时间戳

?>

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

上一篇:mysql 日期与时间

下一篇:mysql 日期与时间

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