转到正文

浪淘沙

静观己心,厚积薄发

存档

分类: PHP

原文地址:http://blog.csdn.net/mark_qi/article/details/8862489

1.      基本概念

计算机存储的信息包括数据信息和控制信息。数据信息又分为数值信息和非数字信息。非数据信息和控制信息包括了字母、各种控制符合、图形符合等,它们都是以 二进制代码存入计算机中。所谓字符编码,就是定义了一套规则,指定了计算机将要存入的所有信息(字母,符号)对应的实际数值;计算机读取的实际数值对应的 显示信息(字母,符号)等。 继续阅读

php一个弱类型语言。一个变量,你可以随便为它赋值,而不需要考虑它原来是什么类型。这样简直是太方便,太爽了。

但是,就是因为这个软类型特性, 使得我们要特别注意变量的比较操作结果。

因为以前没有太在意php变量比较规则,昨天在实现功能的时候就掉进坑里面去了。

代码如下:

$needle = '5';
$haystack = array(5,10,15);
if (in_array($needle, $haystack, true)) {
    echo var_export($needle, 1), ' is in array ', var_export($haystack, 1);
} else {
   echo var_export($needle, 1), ' is not in array ', var_export($haystack, 1);
}

我的本意是 可以进入到if 语句块,但是结果却进入了else语句块。因为in_array使用的严格模式,php认为 数字5 和字符串’5′ 是不相等的。虽然他们的值一样,但是他们的类型是不一样的,一个是数字类型,而另一个却是字符类型。 继续阅读

原文地址:http://news.cnblogs.com/n/127206/

本文来自于对活跃在 SourceForge 和 GitHub 上的项目的分析研究,同时我也在 Twitter 上向大家进行了调查,以免漏掉了很热门但是我却不知道的项目。

下面列出的项目都非常受欢迎,同时它们也成为了 PHP 编程界的标准,前景很好。(排名不分先后) 继续阅读

原文地址:http://news.cnblogs.com/n/174418/

英文原文:10 Principles of the PHP Masters

在 WEB 开发世界里,PHP 是最流行的语言之一,从 PHP 里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用“最佳做法”去写一个 PHP 程序。这里,我们向大家介绍 PHP 的 10 种最佳实践,当然,每一种都是经过大师们证明而得出的。

1. 在合适的时候使用 PHP – Rasmus Lerdorf

没有谁比 PHP 的创建者 Rasmus Lerdorf 明白 PHP 用在什么地方是更合理的,他于 1995 年发布了 PHP 这门语言,从那时起,PHP 就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界。可是,Rasmus 并不是因此而创建 PHP 的。PHP 是为了解决 WEB 开发者的实际问题而诞生的。

和许多开源项目一样,PHP 变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏。它完全可以作为一个案例,一个解决各种 Web 问题的工具需求所引起的案例,因此当 PHP 刚出现的时候,这种工具需求全部聚焦到 PHP 的身上。

但是,你不能奢望 PHP 可以解决所有问题。Lerdorf 是第一个承认 PHP 只是一种工具的人,并且 PHP 也有很多力所不能及的情况。

根据工作的不同来选择合适的工具。我跑了很多家公司,为了说服他们部署和使用 PHP,但是这并不意味着 PHP 对所有问题都适用。它只是可以一个解决大部分问题的 front-end 脚步语言。

作为一个 web 开发者,尝试用 PHP 解决所有问题是不科学的,同时也会浪费你的时间。当 PHP 玩不转的时候,不要犹豫,试用一下其他的语言吧。  继续阅读

原文地址:http://news.cnblogs.com/n/158147/

英文原文:PHP is much better than you think ,翻译: alex zhan

有很多对于 PHP 的抱怨,甚至这些抱怨也出自很多聪明的人。当 Jeff Atwood 写下对于 PHP 的另一篇抱怨文章之后,我思考了下 PHP 的好的方面。

这些抱怨最大的问题是他们出自很多仍在使用旧版本 PHP 的人。他们或许是不愿意关心或许是不愿意承认 PHP 不管在语言层面还是在社区层面都在以很快的速度演变。实际上它比任何其他语言或者 web 平台都演变的快。尽管并不总是如此,但是过去的五年 PHP 经历了一个惊人的历程。 继续阅读

原文地址:http://blog.csdn.net/lxzo123/article/details/6718771

在做一些互联网应用的时候,往往需要抓取网络文件大多数网页文件,一般情况下都是利用php模拟浏览器的访问,通过http请求访问url地址,然后得到html源代码或者其它格式的数据,然后对这些数据进行处理格式化,按照我们事先约定好的方式输出到终端或其它接口。

一、 PHP抓取页面的主要方法:

1. file()函数

2. file_get_contents()函数

3. fopen()->fread()->fclose()模式

4.curl方式

5. fsockopen()函数 socket模式

6. 使用插件(如:http://sourceforge.net/projects/snoopy/) 继续阅读

phpquery —  官方网站:  http://code.google.com/p/phpquery/    很不错的说

Snoopy  ——  http://snoopy.sourceforge.net/ 你懂的。

原文地址:http://blog.csdn.net/xjc1278003262/article/details/8763591

工厂三姐妹分别是简单工厂模式、工厂方法模式、抽象工厂模式。

一、简单工厂模式:

1. 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。

2. 优点:是包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

3. 缺点: 由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。当系统中的具体产品类不断增多时候,可能会出现要求工厂类根据不同条件创建不同实例的需求。这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了,违反了“开——闭原则”。 继续阅读

php中array_merge的功能如同其字面意思:将array进行merge操作。将多个数组合并成一个数字。

需要特别特别注意的事情就是:“如果数组是数字索引的,则键名会以连续方式重新索引。”

是的。没有错。FCK,该函数会将数字索引重新索引。

如果需要将多个数组合并成一个且不希望重新索引数字索引的话,请千万不要使用array_merge。

如果要合并2个数组又不能重新索引数字索引的话,可以尝试使用 “+”(加号) 这个操作符。 使用这个操作符

需要注意的事情是:

“+”(加号)会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉。 

所以,一定要注意两个数组的先后顺序。

如果需要了解”+”(加号)和array_merge 的区别可以 参考网址“PHP合并数组+与array_merge的区别分析

session共享一般使用的方法有两个:

1、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。

2、集中存储到数据库中,这是比较多的实现方法,通过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。

下面再对session共享问题进行稍微详细的阐述。

session共享用简单的一句话就是:“多服务器共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION 数据。

第一个目标的实现其实很简单,只需要对 COOKIE 的域(domain)进行特殊地设置即可,默认情况下,

COOKIE 的域是当前服务器的域名/IP 地址,而域不同的话,各个服务器所设置的 COOKIE 是不能相互访问

的,如 www.aaa.com 的服务器是不能读写 www.bbb.com 服务器设置的 COOKIE 的。

这里我们所说的同一网站的服务器有其特殊性,那就是他们同属于同一个一级域,如:aaa.infor96.com

和 www.infor96.com 都属于域 .infor96.com,那么我们就可以设置 COOKIE 的域为 .infor96.com,这样

aaa.infor96.com、www.infor96.com 等等都可以访问此 COOKIE。PHP 代码中的设置方法如下:

 <?php ini_set('session.cookie_domain', '.infor96.com'); ?> 

这样各个服务器共享同一客户端 SESSION ID 的目的就达到了。
继续阅读