您的位置:首页 > 编程语言 > PHP开发

php notes

2016-07-13 10:54 615 查看
1. foreach中的引用

<?php

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
foreach ($arr as $value) {
echo $value.", ";
}

?>


输出2,4,6,8.

如果去掉&就不对了:

<?php

$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}

unset($value); // 最后取消掉引用
foreach ($arr as $value) {
echo $value.", ";
}

?>


输出1,2,3,4

2. foreach基本用法:[ref]

<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $age) {
echo $age,'<br />';
}
?>


运行该例子输出:

18
20
25


<?php
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
foreach ($arr_age as $key=>$age) {
echo $key,': ',$age,'<br />';
}
?>


运行例子输出:

wang: 18
li: 20
zhang: 25

3. unset()函数销毁变量 [ref]

4. PHP类中set和get方法 [ref]

5. PHP操作数据库 [ref]

6. 继承 extends

PHP中继承是单一继承,不同于C++中的多继承。

7. self

self类似与$this关键字,但$this是需要类实例化以后才可以使用,self 可以直接访问当前类中的内部成员。

注意:因为没有实例化的类访问内部属性或者方法是没有意义的,所以self一般用来访问类中的:静态成员,常量,或者其他定义内容。

可参看此文

8. static

static可以在类未被实例化时使用,静态属性单独占用内存而不会因创建多个对象而导致同样的方法或者属性重复占用。

-- 类内部访问静态成员:

类名称 : : 静态成员
self : : 静态成员

-- 类外部访问静态成员:

类名称 : : 静态成员

9. const

const用来定义类中的常量,类似PHP外部定义常量的关键字define();

常量不用$符。

10. 接口 interface

接口:一种成员属性全部为抽象的特殊抽象类。

---接口和抽象类之间的区别:

https://www.sitepoint.com/dependency-injection-with-pimple/

Class A depends on class B. If class B is not available then the above code will not work.

Moreover, every time we hard code the creation of an object inside a class, we are making a concrete dependency to that class. Concrete dependencies are a barrier to writing testable code. A better way is to provide an object of class B to class A. These objects can be provided through A’s constructor or a setter method.


View Code
ref 这篇讲的也非常好!

总结:当A需要B时,不要直接在A里new (), 而是传递一个B的对象作为参数给A。

---------------------------------------- ---------------------------------------- ---------------------------------------- ----------------------------------------

真实的容器可以实现自动绑定(Autowiring)或 自动解析(Automatic Resolution)、注释解器(Annotations)、延迟注入(Lazy injection)等功能,都要学习一下。

pimple容器:ref

注意,在用pimple时,和使用普通的匿名函数并不一样。

ref3的这段代码为例:

$container['session_storage'] = function ($c) {
return new SessionStorage('SESSION_ID');
};

$container['session'] = function ($c) {
return new Session($c['session_storage']);
};


先看其中第一段代码,如果是对于匿名函数而言,$x = function($param){SOME CODE}; 那么$x里存的是匿名函数本身。匿名函数并不执行,只有在出现“$x(参数)”时才执行。

但是在这里,

$container['session_storage'] = function ($c) {SOME CODE};

这里=右边的部分,当前container会作为参数传递给$c, 并执行该匿名函数,然后将该匿名函数的返回值new SessionStorage('SESSION_ID')存入container('session_storage')里。

18. 容器

对容器赋值并不是像C++那样赋值,而是把部分东西

19. 魔术常量 [ref]

20. 后期静态绑定 [ref]

21. 几种设计模式:工厂,DAO,xxx

ref

<head first设计模式>

22. php反射机制 [ref]

23. pimple库的用法:ref

24. monolog 【ref

25.

<1> PDO

PDO和prepared statement介绍[ref0]

prepared statement 预处理语句 [ref]

<2>FluentPDO [ref] 写的非常好!

fluentPDO在test里看实例,有doc里没说过的用法。

26.

<1> DAO & VO [ref] (此文超级赞)

DAO+VO组成MVC中的Model。(ref中说的)

可以google一下"php dao"看一下其他相关文章,能学到更多知识。

[ref]为yiiframework里面对DAO的介绍。

<2> MVC模式/框架 (Model-view-controller)

PHP MVC框架:ref

yii doc中介绍MVC: ref

27. PHP相关设计模式 [ref]

28. yii framework [ref ref2]

admin intro: [ref3]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: