PHP v5.3的新鲜玩意

1)_callStatic() magic 方法

 

 
2)动态调用函数 <br /><textarea class="php" name="code">class&nbsp;Dog{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;bark()&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&quot;Woof!&quot;;&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;&nbsp;$class&nbsp;=&nbsp;'Dog'$action&nbsp;=&nbsp;'bark';$x&nbsp;=&nbsp;new&nbsp;$class();&nbsp;//&nbsp;instantiates&nbsp;the&nbsp;class&nbsp;'Dog'$x-&gt;$action();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;outputs&nbsp;&quot;Woof!&quot;&nbsp;</textarea> <br /><br />
3) 标准
PHP库(SPL)
 
加了了少数几个容器类,比如,栈(SplStack)和固定数组(SplFixedArray)

4) Closures 功能
 
关于Closures,这是一个把函数定义成变量的玩意。让我们看几个例子:
示例一:

 

示例三,返回值

 

 

示例五,Reflection API

 

  
更为详细的文章,请参考这里,链接

 

 
5) 使用namespace
新版的PHP会开始支持C++式的namespace,请参看示例:
示例一

 

 

 

 
6)开始支持Achieve包
正像JAR一样,PHP也要开始支持自己的Achieve包了,叫作,Phar。PHP提供了一整套函数来帮助开发人员创建和使用Phar,正如下面的示例所示:
创建

 

创建文件存根(stub)

 
 

加入文件

 

使用Phar

 
 
更为详细的文章,请参考这里,链接
 

101个设计模式

所以设计模式,实是是一种方法,一种为了解决某种或某类物定问题所使用的设计模型。据说,在编程语言方面有100多种设计模式,而在现实生活中,传说有上成千上万个模式,比如写书有写书的设计模式,写武侠的一种,言情的另一种,连官方的新闻稿件也有。
 
言归正传,这个站点(http://sourcemaking.com/design-patterns-and-tips)是向大家着力推荐的讲解编程方面设计模式的网站,除了GoF那经典的23个三大类的设计模式,还有N多的其它种类的设计模式。一共101个,最重要的是,它的这101个设计模式的写作模式如下:

1、模式的意图

2、要解决什么样的问题

3、模式的讨论

4、模式的结构

5、模式的业务示例

6、实现模式的Checklist

7、模式的规则

8、代码示例(包括各种语言,如:Java、C++、PHP、Delphi…)

非常不错的编程技术教程

下面是一些非常不错的编程教程,当然,全是英文版的。不过因为是新手教程,所以非常容易阅读,可以在学习技术的同时加强一下自己的英语阅读能力。
如果你是一个新手,建议你把本页设为你的收藏夹。
C
Introduction to C Programming
C Optimization Tutorial
Compiling C and C++ Programs on UNIX Systems- gcc/g++
Building and Using Static and Shared C Libraries
Programming in C: UNIX System Calls and Subroutines Using C
C FAQ
C Programming Class Notes
ANSI C for Programmers on UNIX Systems
Sams Teach Yourself C in 24 Hours
Sams Teach Yourself C in 21 Days (4th Ed.)
The Standard C Library for Linux - Part 1: file functions
The Standard C Library for Linux - Part 2: character input/output
The Standard C Library for Linux - Part 3: formatted input/output
The Standard C Library for Linux - Part 4: Character Handling
The Standard C Library for Linux - Part 5: Miscellaneous Functions
Programming in C: A Tutorial
An Introduction to C Development on Linux
C Programming Course
C Language Tutorial
CScene: An Online Magazine for C and C++ Programming

C++
C++ Tutorial
Understanding C++: An Accelerated Introduction
An Introduction to C++ Class Hierarchies
G++ FAQ
Introduction to Object-Oriented Programming Using C++
Compiling C and C++ Programs on UNIX Systems - gcc/g++
C++ FAQ Lite
C++ Programming Language Tutorials
Reducing Dependencies in C++
C++ Exception Handling
Part 1: Unicode
Part 2: A Complete String Class
Making C++ Loadable Modules Work
Sams Teach Yourself C++ in 21 Days (2nd Ed.)
C++ Portability Guide
C++ Tips
C++ Language Tutorial
CScene: An Online Magazine for C and C++ Programming
C++ Libraries FAQ

 

Java
Enterprise JavaBeans Tutorial
JavaBeans Short Course
Introduction to the JavaBeans API
JDBC Short Course
Essentials of the Java Programming Language, Part 1
Essentials of the Java Programming Language, Part 2
Writing Advanced Applications for the Java Platform
Fundamentals of Java Security
Fundamentals of Java Servlets
Introduction to the Collections Framework
Introduction to CORBA
Fundamentals of RMI
Advanced
Introductory
Intermediate
Java Language Specification
Java Tutorial: Servlet Trail
Java Virtual Machine Specification (2nd Ed.)
Glossary of Java and Related Terms
The Java Language Environment
Java Look and Feel Design Guidelines
Story of a Servlet: An Instant Tutorial
Introduction to Java
Java2D: An Introduction and Tutorial
Java Servlet Tutorial
comp.lang.java FAQ
Brewing Java: A Tutorial
Shlurrrppp … Java: The First User-Friendly Tutorial on Java
Swing Tutorial
Swing: A Quick Tutorial for AWT Programmers
Thinking in Java
Java RMI Tutorial
Java for C++ Programmers
The Advanced Jav/aJ2EE Tutorial
Hacking Java: The Java Professional’s Resource Kit
JFC Unleashed
Java Developer’s Guide
Java Developer’s Reference
Sams Teach Yourself Java in 21 Days (Professional Reference Ed.)
Java Unleashed (2nd Ed.)
Java 1.1 Unleashed (3rd Ed.)
Java Game Programming Tutorial
Java Networking FAQ
Java Tutorial: A Practical Guide for Programmers
Sockets Programming in Java
Programming with Java - Part I
Programming with Java - Part II
Setting Up a Java Development Environment for Linux
Understanding Java
Beginner’s Guide to JDK
GUI Development in Java
Java Servlets: An introduction to writing and running Java servlets on Linux

 

全球IP地址数据库

下面是一个免费的全球IP地址数据库,包括了国家,城市,地区,和经纬度,以便你可以利用Google Map在地图上标注。这个数据库的精确度可能有60%左右。
 
SQL format
更新至 2009年3月11日
CSV format (多文件)
更新至 2009年3月11日

下面是怎么使用这个数据库。
首先,所有的IP地址都是按一个整形来存放的,假设一个IP地址为A.B.C.D,那么其计算公式如下所示:
ip = (A*256+B)*256+C
也就是说,它只计算到网段为:A.B.C.0到A.B.C.255。例如:我们有一个IP地址为:74.125.45.100 (google.com),那么,
ip = (74*256+125)*256+45 = 4881709
这样,我们可以方便地使用如下的SQL语句搜索数据:
SELECT * FROM ip_group_city
WHEREip_start <= 4881709 ORDER BY ip_start DESC LIMIT 1;
结果会是如下所示:
ip_start|country_code|region_code|city|zipcode|latitude|longitude
4881664|US|CA|Mountain View|94043|37.4192|-122.057
如果你想在线使用这些数据的话,你可以使用如下所示的网址:
http://blogama.org/ip_query.php?ip=74.125.45.100&output=xml
于是,你就会得到如下的XML数据:
<?xml version=“1.0″ encoding=“UTF-8″?>
<Response>
<Ip>74.125.45.100</Ip>
<Status>OK</Status>
<CountryCode>US</CountryCode>
<CountryName>United States</CountryName>
<RegionCode>CA</RegionCode>
 
<RegionName></RegionName>
<City>Mountain View</City>
<ZipPostalCode>94043</ZipPostalCode>
<Latitude>37.4192</Latitude>
<Longitude>-122.057</Longitude>
</Response>

如果你请求的是:
这样你会得到CSV的格式:
74.125.45.100,OK,US,United States,CA,,Mountain View,94043,37.4192,-122.057

使用Javascript清除COOKIE