php学习记录《七》

PHP 函数:

1:PHP函数不支持重载,而且函数是不区分大小写的,但是建议区分大小写~~!毕竟需要和谐!

2:递归函数 不要递归过多,可能会因为堆栈溢出导致脚本崩溃。
<?php
function reverse($a){
if($a < 20){
echo "this is $a";
$a += 1;
reverse($a);
}
}

3:参数默认是按值传递,标量。 如果想要按引用传递,则要加&。
默认参数 :
function default_param($a = "default value"){
echo "$a";
return;
}
null 和 空是不一样的。
default_param(); // default value;
default_param(null); // ;
default_param("hahha"); // hahha

还有事非标量的传值:
function makecoffee($type = array("test")){
}
3:
传递非默认值的参数要放在默认值参数的左边。
这是错误的示范:
<?php
function makeyogurt($type = "acidophilus", $flavour)

正确的示范:
<?php
function makeyogurt($flavour, $type = "acidophilus");


4:多个参数的传递,我理解为动态参数:

<?php
function sum(...$number){
$acc = 0;
foreach($number as $n){
$acc += $n;
}

echo $acc;
}

sum(1,2,3,4);

参数可以定义类型
function sum(DataInterval...$interval){
do ......
}

也就是说传入的interval就是要求是DataInterval。
5:return返回

没有return时,默认是null。
如果要返回多个值,可以通过数组实现类似的效果。

如果要返回引用则需要在两个地方处理

<?php
function &reference_func(){
//return $some_ref; 这是官方的写法。我觉着不是很清楚
$val = "value";
return $val;
}

//使用这个返回值
$user_ref = & reference_func();


可变函数:
这个很优秀。

<?php
function foo(){
echo "this is function foo\n";
}
function bar(){
echo "this is function bar\n";
}


$func = 'foo';
$func();

$func = 'bar';
$func();


6:匿名函数:也叫闭包~!
<?php
$greet = function($name){
printf("Hello %s \r\n",$name);
}

$greet("ni hao");

基本的使用,还有变量的作用范围。以后再看
7: class的介绍。
new部分,我感觉超级优秀!!
比如新建的类可以这样玩。
$classname = 'Foo';
$instance = new $classname(); //Foo()

感觉像是只要你建好类,就可以动态加载,然后代码方面会非常简洁。

类的继承。 不能多继承,一个类只能继承一个类

访问属性的方法: 真是综合了Python和c++语言,各种混合。
访问非静态属性:$this->property
访问静态属性:self::$property

类中的常量使用:
class MyClass{
const constant = 'constant value';

function showConstant(){
echo self::constant. "\n";
}
}
在类外面访问const

$class = new MyClass();
echo $class::constant. "\n"";

自动加载类。这个主要是用在引用定义类的文件,就像每个java类是一个文件,使用时需要import,然后一堆import
<?php
function __autoload($class_name){
require_once $class_name.'.php';
}

$obj1 = new MyClass1();
$obj2 = new MyClass2();

__autoload以后要被废弃了。
先这么用着

7:构造和析构函数的使用:
__construct(){

}
__destruct(){

}


如果要调用父类的构造函数
__construct(){
parent::__construct();
do other construct;
}

::这个是叫 范围解析操作符。一般是用来访问静态常量,类的常量。

posted @ 2015-08-21 19:46  _Doraemon  阅读(191)  评论(0编辑  收藏  举报