多数大学生出来选择的工作和专业无关
首页 > 专业知识

PHP系列学习之日期函数

时间:2018-03-19 18:04:45 [来源]:郑州PHP培训学校

   PHP系列学习之日期函数

  PHP是一门非常令人惊奇的语言。它足够强大(最大的博客(wordpress)的核心语言),它足够广泛(运行在最大社交网站facebook上),它足够简单(作为初学者首选入门语言)。在低成本的机器上运行良好。而且php语言有很多非常不错的服务器套件(如WAMP和MAMP),很方便的安装在你的机器上。PHP有非常丰富的库资源,便于开发者很容易的处理一些业务。由于我们在项目中与日期接触最多,所以今天就从日期函数入手学习。
  举一个简单的date例子
  我将使用echo命令把内容输出到我们的客户端(浏览器)。我将使用下面的代码做为基础代码。
  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="utf-8" />
  <title>Getting started with dates in php5</title>
  </head>
  <body>
  <?php
  date_default_timezone_set('Asia/Shanghai');echo "Today is ",date('l');
  ?>
  </body>
  </html>
  你将在你的浏览器里看到如下的内容。
  Today is Friday
  这个函数输出星期几的文本格式。date函数至少需要一个字符参数(这个参数告诉我们怎样格式化当前日期)。
  尝试不同的格式
  如果你看了php手册中PHP date function,那么你将发现有很多格式化日期的方式。
  <?php echo "Today is ",date('Y-m-d'); ?>
  将得到:Today is 2012-08-17
  有一些日期是很普遍地被使用,所以PHP提供了一些常量供你使用。举例,你可以使用Cookie获取到客户端日期。
  <?php echo "Today is ",date(DATE_COOKIE); ?>
  你将得到如下面的内容:Today is Friday, 17-Aug-12 11:34:38 CST注意当使用常量的时候不要使用引号。
  现在是什么时候?
  如果你想要输出当前时间,你能使用date(不同格式化字符参数)。
  <?php echo "The time is ",date('g:i:sa'); ?>
  你将得到:The time is 11:39:59am
  本地化你的时区
  如果你发现以上的代码没有给出正确的时间,很有可能是因为你的服务器设置了与你本地不同的时区。你需要在服务器上指定时区,那么你用下面的代码:
  <?php date_default_timezone_set('Asia/Shanghai'); ?>
  这个将设置中国上海时区。这是php5的函数(注意旧版本的php),有很多供你选择时区。如果你想永久生效,你可以修改你的php.ini文件。
  获取其他时间
  你经常需要其他时间,而不是现在的时间。当你用date()函数创建时间的时候,系统会使用Unix系统时间。这个时间表示从1970年1月1日 00:00:00 GMT(Unix 纪元时间),到现在的秒数。
  为了详细说明怎样获取指定时间的日期,你可以提供秒数做为date(0函数的第二个参数。
  <?php echo "Today is ",date('Y-m-d', 1309133434); ?>
  结果是:Today is 2011-06-27
  这个看起来没什么用途,但它意味着你能用date()函数做计算。这之前,你需要简单的创建一个时间戳。
  创建时间戳
  有很多创建时间戳的方式。我们能够使用mktime()函数得到我们需要的时间戳。
  <?php
  $mytime=mktime(9, 23, 33, 6, 26, 2011);
  echo "Today is ",date('Y-m-d g:i:sa', $mytime);?>
  得到的结果是:Today is 2011-06-26 9:23:33ammktime()函数需要你依次传递小时,分钟,秒,月,日,年。这是获取时间戳的好的方式,但是有更酷的方式。
 
  PHP系列学习之AOP
  介绍
  你以前听说过AOP(Aspect Oriented Programming)吗?虽然在php方面,好像没有过多的使用,但是在企业级开发中,AOP被广泛使用。我将借此文,向大家介绍PHP方面的AOP。
  这篇文章主要解释AOP的概念。
  什么是AOP?
  在应用开发中,我们经常发现需要很多功能,这些功能需要经常被分散在代码中的多个点上,但是这些点事实上跟实际业务没有任何关联。比如,在执行一些特殊任务之前需要确保用户是在登陆状态中,我们把这些特殊人物就叫做"cross-cutting concerns",让我们通过Wikipedia来了解一下"cross-cutting concerns"(横向关系)的定义。
  在计算机科学中,"cross-cutting concerns"指的是“切面(或方向)编程”。这些关系不能从其他系统(框架设计或者某些实现)中很好的分解出来,以至于出现代码重复,在系统中存在有意义的依赖关系,或者两者兼有之。
  现在你对于“横向关系”应该有一个基础的认识,让我们看看他们在代码中是怎么样的?
  假设一种场景,你是一个博客站点的编辑。你需要登陆站点,然后进行创建帖子,验证帖子,编辑帖子等等。如果你没有登陆,那么你应该直接到登陆界面。为了确保这些行为是安全的,以上的任何操作都需要进行有效验证,代码如下。
  <?php
  class BlogPost extends CI_Controller
  {
  public function createPost() {
  if (!Authentication::checkAuthentication()) {// redirect to login
  }
  else {
  // proceed
  Messages::notifyAdmin();
  }
  }
  public function approvePost() {
  if (!Authentication::checkAuthentication()) {// redirect to login
  }
  else {
  // proceed
  }
  }
  public function editPost() {
  if (!Authentication::checkAuthentication()) {// redirect to login
  }
  else {
  // proceed
  }
  }
  public function viewPost() {
  // ...
  }
  }
  看上面的代码,你会发现在每个方法之前都调用了checkAuthentication(),因为这些行为需要用户登陆之后才能进行。还有就是notifyAdmin()来辨别是否是管理员帐号,以便创建新贴。看见没有,有很多“重复的代码”,而且BlogPost类,应该仅负责管理帖子。验证和辨别身份应当是分离的。我们违反了“单一职责原则”。
  单一职责原则讲述的是每个类应该只有单一的责任(任务),而且应该把整个责任都封装在一个类中。所有服务应该按照职责严谨而均衡的进行分布。
  迄今为止,我们能够明白AOP所表达的意思。横向切面关系被成组的放进一个类中,我们管这个类叫“切面”。从我们核心代码中分离横向切面关系的过程就叫做Aspect Oriented Programming。
 
  并行的RPC框架
  Yar(yet another RPC framework, 教主问我为啥都是Ya打头, 呵呵, 因为这样名字好起)是我在3个多月前, 为了解决一个实际的问题, 而开发的一个PHP扩展的, RPC框架, 和现有的RPC框架(xml-rpc, soap)不同, 这是一个轻量级的框架, 支持多种打包协议(msgpack, json, php), 并且最重要的一个特点是, 它是可并行化的..
  考虑如下的场景:
  传统的Web应用, 一个进程, 一个请求, 天经地义. 然而, 当一个请求的处理中, 涉及到多出数据源, 并且他们之间具有一定的不依赖性.
  还是传统的Web应用, 一个应用随着业务快速增长, 开发人员的流转, 就会慢慢的进入一个恶性循环, 代码量上只有加法没有了减法. 因为随着系统变复杂, 牵一发就会动全局, 而新来的维护者, 对原有的体系并没有那么多时间给他让他全面掌握. 即使有这么多时间, 要想掌握以前那么多的维护者的思维的结合, 也不是一件容易的事情…那么, 长次以往, 这个系统将会越来越不可维护…. 到一个大型应用进入这个恶性循环, 那么等待他的只有重构了.
  那么, 能不能对这个系统做解耦呢?
  我们已经做了很多解耦了, 数据, 中间件, 业务, 逻辑, 等等, 各种分层. 但到Web应用这块, 还能怎么分呢, MVC我们已经做过了….
  基于此, Yar或许能解决你遇到的这俩个问题…Yar是一个非常轻量级的RPC框架, 我在实现Yar的时候, 追求了极致的轻量级, 它使用非常简单, 对于Server端:
  <?php
  class API {
  /**
  * the doc info will be generated automatically into service info page.
  * @params
  * @return
  */
  public function api($parameter, $option = "foo") {}
  protected function client_can_not_see() {}
  }
  $service = new Yar_Server(new API());
  $service->handle();
  ?>
  和Soap使用方法很相像吧? 是的, 就这样, 你的API类就可以对外提供服务了..
 

上一篇:PHP保护数据库的具体代码示例

下一篇:经常用到的PHP正则表达达式