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;
}

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

时间: 2024-08-07 07:02:13

php学习记录《七》的相关文章

Oracle学习记录 七 继续接六的

下面是转换函数 to_char select to_char(sysdate,'yyyy') from dual; select to_char(sysdate,'fmyyyy-mm-dd') from dual; select to_char(sysdate,'yyyy-mm-dd') from dual; select to_char(sysdate, 'DDD') from dual;    一年中的第几天 select to_char(sysdate, 'DD') from dual; 

c++学习记录(七)

c++学习实践之重载 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同 c++类中有重载运算符和重载函数 重载函数 声明多个相似但形式参数个数或者类型不同的函数,编译器通过把你所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义. (1)例子 #include<iostream> using namespace std; class Num { public: void print(int a) { cout <

Python学习记录七---继承、多态和封装

1.创建类 创建文件 test7.py #! /usr/bin/env python class Person: def setName(self, name): self.name = name def getName(self): return self.name def greet(self): print "hello, world! I am %s."% self.name foo = Person() foo.setName('yilia') foo.getName() f

SpringMVC学习记录(七)--拦截器的使用

SpringMVC的请求如下面这种图所示: 可以看出所有的请求都要通过Dispatherservlet来接收,然后通过Handlermapping来决定使用哪个控制器,再根据ViewResolver来决定返回哪个视图.从流程来看,Handlermapping就是我们可以实现拦截器的第一种方法.另外还有一种是实现WebRequestInterceptor接口,或者继承其子类. 一.实现HandlerInterceptor接口 实现HandlerInterceptor接口或者继承HandlerInt

zeromq学习记录(七)订阅发布消息封装

之前也有提到 使用订阅发布 pub sub模式必须要显示定义ZMQ_SUBSCRIBE 只有以此模式定义的过滤字节开头的消息才会被订阅者收到 如果想收到所有信息 可定义subscriber.setsockopt(ZMQ_SUBSCRIBE, "", 0); 此类过滤器 示例很简单 我将示例代码发布者与订阅者整合到一个工程中 开启两个线程演示 上代码 // psenvpubsub.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"

TMS320F28035学习记录七

1.一种处理器可以利用其外设(也可以认为是功能模块)去实现某种功能.具有相同功能的外设一般不止一个,如两个串口外设或6个ePWM外设等.但具有相同功能的外设,其寄存器组分配形式往往是很相似的,我们可以用位域结构体共用体结构体的方式去定义一个功能寄存器组类型,然后用这个自定义类型去定义一个外设. 2.定义每一个寄存器的位域结构体类型,然后用这个位域结构体类型结合整型定义一个共用体类型.用这种方式定义一个功能模块的所有寄存器组.最后采用共用体结构体方式定义一个寄存器组类型. 3.位域的定义必须从右往

Python学习记录-2016-11-29

今日学习记录: 心灵鸡汤: 要有合适自己的目标,一个目标一个目标实现,切忌好高骛远: 最好的投资就是投资自己: 实现梦想 学习,学习,再学习: Talk is cheap. 从本身而言,余三十而立之年,从事测试行业7七年有余,一年半华为外包路由器,两年无线wifi测试,一年半网管软件测试,一年自动化测试经理,推行公司自动化测试进程,从开始的TCL,到现在的python,工欲善其事必先利其器,所以自己来学习,总体我认为我的目标是一直前进的,不断变化的,但是方向并没有大的错误,有些累,所以近期有些懈

2014.6.4淘宝学习记录

今天主要认识了小柒.七念.圆影......体会了阿里人自己设计的chrome插件之UData.这是个很牛的插件,用于天猫和淘宝的数据分析,比如用户页面每个部位的点击量,同一IP的点击量,热度的显示,加入收藏夹.支付等数据,通过分析PV,UV,IPV便于他们后期页面的布局设计等.在学习体会的过程中,发现很多网站是内部开放,外部访问不了,体会到阿里巴巴学习内容的丰富性.下午4点多参与了有数的分析讨论会,感受到了团队的力量,每个人在开会期间,一有疑惑可以随时提出,然后进行讨论,各自说出自己的想法和改进

[ZHUAN]Flask学习记录之Flask-SQLAlchemy

From: http://www.cnblogs.com/agmcs/p/4445583.html Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate 是一个数据迁移框架,需要通过Flask-script库来操作. 一.配置Flask-SQLAlchemy 程序使用的数据库地址需要配置在SQLALCHEMY_DATABASE_URI中,SQLALch

Git 学习(七)标签管理

Git 学习(七)标签管理 发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支雷同,但分支可以移动,标签不可):创建和删除标签都是瞬间完成的. 本文具体说明 Git 中是如何创建标签及操作标签的. 创建标签 Git 标签的命令很简单,首先简单浏览下方的 Git 命令: git tag