分类目录归档:PHP

模板文件中用的多,如page.tpl.php

流程控制的替代语法

(PHP 4, PHP 5, PHP 7)

PHP 提供了一些流程控制的替代语法,包括 ifwhileforforeachswitch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;endwhile;endfor;endforeach; 以及 endswitch;

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

在上面的例子中,HTML 内容“A is equal to 5”用替代语法嵌套在 if 语句中。该 HTML 的内容仅在 $a 等于 5 时显示。

__METHOD__,__FUNCTION__

本文实例讲述了PHP中魔术变量__METHOD__与__FUNCTION__的区别,分享给大家供大家参考。具体分析如下:
__METHOD__类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__FUNCTION__函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
文档解释都是说返回函数(方法)的名字。区别在于:
__FUNCTION__只是返回方法的名字;

__METHOD__返回类的名字和方法的名字。

<?php
      class Test{
        public function doit(){
          echo __FUNCTION__;
        }
        public function doitAgain(){
          echo __METHOD__;
        }
      }
      $obj = new Test();
      $obj->doit();
      echo '<br>';
      $obj->doitAgain();
?>

输出结果为:
doit
Test::doitAgain

 

php的echo输出字符串中的逗号

当使用 echo进行字符串输出时,如果字符串使用拼接方式组成,可以使用逗号来连接需要拼接的各部分字符串和变量,比如

echo ‘first’,”second”,$str,”end”;

据说这样输出速度要快一些,原因在于echo可以接受多个参数,并直接按顺序输出,实际上逗号不是拼接字符串,而是把不同字符串和变量作为参数传送给echo命令。

php的final类和final方法,final类不可被继承,final方法不可被重写,mark

final—用于类、方法前。
final类—不可被继承。
final方法—不可被覆盖。
final类不能被继承。
如果我们不希望一个类被继承,我们使用final来修饰这个类。这个类将无法被继承。比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型。

php use 使用

原链接:http://www.chrisyue.com/php-namespace-and-use.html#comment-4039

namespace(后面简称ns)还蛮好懂的,在定义了一个ns之后,下面所申明的class, interface, const(不包含variable哦亲~)都是在申明的ns这个“域”里面的。当引用一个申明了ns的包含文件,想要调用这个ns里面的东西,那必须调整当前脚本也到此ns域,否则就得用全称(包含ns全称):

继续阅读

php的curl参数returntransfer的理解

简单说,RETURNTRANSFER参数设定后,会把所获取的内容存放在一个变量中,通过echo $value来呈现在页面上,否则直接存在内存中,如果不加,或者设置为false此选项,,则会直接打印出所请求的页面。。。。。

网上说的文件流什么的,对我这个菜鸟来说,太高深。

base auth

nonce:在摘要认证中服务器让客户选一个随机数(称作”nonce“),然后浏览器使用一个单向的加密函数生成一个消息摘要(message digest),该摘要是关于用户名、密码、给定的nonce值、HTTP方法,以及所请求的URL。
algorithm:算法,如algorithm=MD5
qop是认证的(校验)方式

WWW-Authenticate是httpd的一个标头
realm的值是一个简单的字符串,而rfc2617上写的是一个email类型的字符串,我看这个没有必要意义,所以我就也简单地写了个email形式的字符串
qop是认证的(校验)方式,这个比较重要,对后面md5的加密过程有影响,值就按照上面的那样写就行了
nonce的值也是一个字符串,如果不严格,可以随机生成一个就行,注意它是个GUID,即唯一的、不重复的。如果严格,则需要包含时间信息、客户端IP信息和其它信息,因为认证过程的时间很短,所以如果服务器收到认证信息后发现这个时间和服务器的时间相去甚远,那说明不正常,直接拒绝,以防止攻击,还有客户端IP,如果这个IP一直这样攻击,则可以在一定时间内发现是该IP的连接则直接断掉。这些严格的做法主要是为了防止攻击。在rfc2617上有狭路为详细的描述。我这里没有考虑这些,只是使用了个简单的字符串
opaque是个字符串,它只是透传而已,即客户端还会原样返回过来。实际上,上面的那些域,客户端都还是会原样返回的,但返回时除了以上的那些域之外,还会增加新的内容进来。

如何学习面向对象,框架,尽快上手,看来也只有头皮硬才行

硬着头皮看源码 多花点时间把流程走一遍绝对值得 我当初就这么看的ZendFramework的源码 花了几个月 看懂之后再看其他的源码 都能领会意思 包括JAVA等其他语言的框架源码 其实都差不多 只是不同的语言而已

ShingChi 658 2014年06月08日 回答

我觉得看一遍 typecho 源码是个不错的选择,可以借鉴下别人阅读代码的经验。比如 @兜兜 写得文章:
http://blog.segmentfault.com/doudou/1190000000449033

海诺 334 2014年06月09日 回答

你首先要了解这类框架的运行机制,然后需要对框架文件存放路径进行了解,明确文件名和方法命名规则,再然后就是读代码。。。
除此之外,即便是天才,也需要静下心来,仔细的研究一个框架的架构,并且对他各种特性进行使用练习,
这天底下的事情,做到没有用,因为你下一次可能就做不到了,情况不同,你也就是横看成岭侧成峰了
学到和知道更没有用,唯有练习最有用,只有不断的练习才能够发现自己明白的越来越多

joomla的url解析

Joomlaindex.php?option=组件名&view=视图名&controller=控制器名&layout=视图分页名
Joomlaindex.php?option=com_test模板和组件com_test的展示 index2.php?option=com_test
仅组件com_test的展示
组件开发需要在数据库 添加记录,并以com_开头,组件分前台与后台,后台组件放在administrator/components下,前台组件放在components 下。
Task是Controller下的分支,没有Task时用默用处理。
建立了View可以用 index.php?option=com_test&view=? 来显示,不需要写Controller,但必需有Controller存在
命名规则:
Controller 类名:控制器名Controller, 控制器名随时,但会影响View和Model的命名 文件名 随时,由主文件调用
View 类名:控制器名View视图名 放在views目录下,以视图名作为目录名,主文件为view.html.php,模板页在tmpl下
Model 类名:控制器名Model视图名 放在models目录下,以视图名为文件名
Model: 继承JModel,所有以get开头的成员函数都作用参数。
比如getXXX(), 从View中可以用$this->get(‘xxx’)获取返回值 Controller: JController成员名对应task名。