标签归档:PHP

PHP设计模式之策略模式

策略模式是将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
实际应用举例,假如有一个电商网站系统,针对男性女性用户要跳转到不同的赠品类目,并且所有广告位展示不同的广告

 

PHP设计模式之工厂模式、单例模式和注册模式

所有面向对象中最常见的三种设计模式分别是:工厂模式,单例模式,注册(器)模式

  1. 工厂模式,工厂方法或者类产生对象,百不是在代码中直接new
  2. 单例模式,使某个类的对象仅允许创建一个
  3. 注册模式,全局共享和交换对象

工厂模式factory.php

单例模式singleton.php

 

 工厂模式和单例结合使用

 

注册器类register.php

 

用PHP开发PSR-0框架之自动加载

使用PHP有一段时间,最近学习了一下rango讲的《大话PHP设计模式》,受益匪浅,于是将所学笔记记录在此,有兴趣的同学可以看一下。课程中开头讲到了自动加载,本文以后的章节都是以此自动加载为基础来展开的。

PSR-0面向对象开法规范,是PHP业界的一个规范

  1. 全部使用命名空间
  2. 所有PHP文件必须自动载入,不能有require/include
  3. 单一入口

入口文件index.php

 文件加载器LampBlog/Loader.php

 

php如何判断是否为json串(格式)

php如何判断是否为json串(格式),如果不是json则返回false

开发者必备,超实用的PHP代码片段!

本文分享了九个超级有用的PHP代码片段,当你在开发网站、应用或者博客时,利用这些代码能为你节省大量的时间。你可以直接拿来用!

一、查看邮件是否已被阅读

当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读。这里有段非常有趣的代码片段能够显示对方IP地址记录阅读的实际日期和时间。

二、从网页中提取关键字

一段伟大的代码片段能够轻松的从网页中提取关键字。

三、查找页面上的所有链接

使用DOM,你可以轻松从任何页面上抓取链接,代码示例如下:

四、自动转换URL,跳转至超链接

在WordPress中,如果你想自动转换URL,跳转至超链接页面,你可以利用内置的函数make_clickable()执行此操作。如果你想基于WordPress之外操作该程序,那么你可以参考wp-includes/formatting.php源代码。

五、创建数据URL

六、从服务器上下载&保存一个远程图片

当你在搭建网站时,从远程服务器下载某张图片并且将其保存在自己的服务器上,这一操作会经常用到。代码如下:

七、移除Remove Microsoft Word HTML Tag

当你使用Microsoft Word会创建许多Tag,比如font,span,style,class等。这些标签对于Word本身而言是非常有用的,但是当你从Word粘贴至网页时,你会发现很多无用的Tag。因此,下面的这段代码可帮助你删除所有无用的Word HTML Tag。

八、检测浏览器语言

如果你的网站上有多种语言,那么可以使用这段代码作为默认的语言来检测浏览器语言。该段代码将返回浏览器客户端使用的初始语言。

九、显示Facebook 粉丝数量

如果你的网站或者博客上有内链的Facebook页面,你或许想知道拥有多少粉丝。这段代码将帮助你查看Facebook粉丝数,记住,别忘了在你的页面ID第二行添加该段代码。

php中的curl使用心得

这两天做的工作使用到了curl

当要请求的url和自己不在一台server上面,不能直接访问

这种情况下使用curl是最好不过了,模拟post请求做一些事,简单方便

下面记录一下在使用过程中的积累

总结一下使用curl方法:

  1. 先初始化curl
  2. 使用curl_setopt设置目标url,和其他选项
  3. curl_exec,执行curl
  4. 执行后,关闭curl
  5. 最后一步就是输出

PHP浮点数的一个常见问题的解答[转摘]

关于PHP的浮点数, 我之前写过一篇文章: 关于PHP浮点数你应该知道的(All ‘bogus’ about the float in PHP)

不过, 我当时遗漏了一点, 也就是对于如下的这个常见问题的回答:

为啥输出是57啊? PHP的bug么?

我相信有很多的同学有过这样的疑问, 因为光问我类似问题的人就很多, 更不用说bugs.php.net上经常有人问…

要搞明白这个原因, 首先我们要知道浮点数的表示(IEEE 754):

浮点数, 以64位的长度(双精度)为例, 会采用1位符号位(E), 11指数位(Q), 52位尾数(M)表示(一共64位).

符号位:最高位表示数据的正负,0表示正数,1表示负数。

指数位:表示数据以2为底的幂,指数采用偏移码表示

尾数:表示数据小数点后的有效数字.

这里的关键点就在于, 小数在二进制的表示, 关于小数如何用二进制表示, 大家可以百度一下, 我这里就不再赘述, 我们关键的要了解, 0.58 对于二进制表示来说, 是无限长的值(下面的数字省掉了隐含的1)..

至于0.58 * 100的具体浮点数乘法, 我们不考虑那么细, 有兴趣的可以看(Floating point), 我们就模糊的以心算来看… 0.58 * 100 = 57.999999999

那你intval一下, 自然就是57了….

可见, 这个问题的关键点就是: “你看似有穷的小数, 在计算机的二进制表示里却是无穷的

so, 不要再以为这是PHP的bug了, 这就是这样的…..

 

php中的urlencode()和rawurlencode()的区别

今天在阅读开源代码时发现了一个URL的编码函数:rawurlencode(),以前一直没有注意过,因为在平时的开发上主要使用的是 urlencode(),故专门研究了一番。

其实这两个函数的区别很简单,它们两个都会把URL中的非英文字符进行转义,替换成”%”后跟两位十六进制数,不同的是:rawurlencode 遵守是94年国际标准备忘录RFC 1738,对空格的转义是’%20′;而urlencode的编码实现的是传统做法,和POST表单数据一样会把空格转义成”+”号。

举个例子:
如果URL地址源的形式是:http://www.zzs.me/php 编码区别

以上输出的结果是:
string(66) “http%3A%2F%2Fwww.zzs.me%2Fphp+%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”
———–
string(68) “http%3A%2F%2Fwww.zzs.me%2Fphp%20%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”

从这个例子中可以很明显的看出二者的区别,如果我们想给编码的URL解码的话,可以使用这两个函 数:rawurldecode(),urldecode() 。在实际的开发中为了避免URL格式不统一,还是推荐大家使用rawurlencode()来进行URL的编码。

Linux服务器关闭SeLinux的方法

刚刚在服务器上安装Zend Guard,安装完成以后用phpinfo()测试

没有显示相应的安装参数,上网一查原来和SeLinux有关系,需要关闭SeLinux才能正常显示

Linux服务器关闭SeLinux的方法如下:

查看SELinux状态:

1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态

SELinux status:                 enabled

2、getenforce                 ##也可以用这个命令检查

关闭SELinux:

1、临时关闭(不用重启机器):

setenforce 0                  ##设置SELinux 成为permissive模式

##setenforce 1 设置SELinux 成为enforcing模式

2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

CentOS 6.3 yum安装LAMP(Apache+MySQL+PHP)

一、 安装并配置MySQL

1.1 执行yum 命令安装MySQL

1.2 把添加MySQL进开机启动项,并立即启动MySQL

1.3 设置MySQL root帐号密码

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQLSERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current

password for the root user. If you’ve just installed MySQL, and

you haven’t set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): <– 输入系统root密码

OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] <– ENTER

New password: <– 你的MySQL root密码

Re-enter new password: <– 你的MySQL root密码

Password updated successfully!

Reloading privilege tables..

… Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] <– ENTER

… Success!

Normally, root should only be allowed to connect from ‘localhost’. This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <– ENTER

… Success!

By default, MySQL comes with a database named ‘test’ that anyone can

This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <– ENTER

– Dropping test database…

… Success!

– Removing privileges on test database…

… Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] <– ENTER

… Success!

Cleaning up…

All done! If you’ve completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

二、 安装Apache

2.1 使用yum命令安装Apache

2.2 设置开机启动Apache

2.3 启动Apache

2.4 现在直接在浏览器键入http://localhost 或http://本机IP,应该会看到Apache的测试页面

 

三、 安装配置PHP

 

3.1 使用yum命令安装PHP

3.2 重启Apache服务器

3.3 安装相关模块使用PHP支持MySQL:为了让PHP支持MySQL,我们可以安装php-mysql软件包;也可使用以下命令搜索可用的php模块

选择需要的模块进行安装

完成后在/var/www/html 里面新建info.php文件

 

能够显示PHP信息表示正确安装PHP和apache。
配置httpd.conf文件(/etc/httpd/conf/httpd.conf)
在httpd.conf文件里面有一句

意思是包含conf.d目录下的所有文件
如果我们想来一些配置尽量去conf.d目录下:以下是目录结构:

3.4 重启Apache服务器

四、 安装配置phpMyAdmin

安装好MySQL,Apache及PHP后,为了可视化的管理MySQL数据库,我们需要安装phpMyAdmin。

4.1 下载最新版本phpMyAdmin,下载地址:http://www.phpmyadmin.net/home_page/downloads.php ,选择最新版本,如phpMyAdmin-3.5.2-all-languages.tar.bz2

4.2 解压程序包

4.3 移动目录phpMyAdmin-3.5.2-all-languages到/usr/share/phpMyAdmin文件夹(建议手工操作,复制粘贴至/usr/share/目录下,后重命名文件名为phpMyAdmin,使用下面的命令行可能导致打开http://localhost/ phpmyadmin 时,提示403错误,暂时不知怎么回事- -!)

4.4 进入phpMyAdmin目录

4.5 拷贝样本配置文件到config.inc.php文件

4.6 修改Apache配置

4.7 写入如下内容

写入并退出

4.8 重启Apache服务器

4.9 至此,打开页面http://localhost/phpmyadmin 即可轻松管理你的mySQL数据库

 

备注:

给数据库授权一个admin用户,密码mysql