php 学习之对象
php中怎么实现创建一个对象然后全局都能调用?
在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:
function smartyObject()
{
if ($GLOBALS['config']['SmartyObj'] == 0)
{
$smarty = new SmartyGame();
$GLOBALS['config']['SmartyObj'] = $smarty;
}
else
$smarty = $GLOBALS['config']['SmartyObj'];
return $smarty;
}
注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对象。否则,它意味着该对象已经被创建,我们只需要返回它。
php中连续调用两个方法
get_core()和get_id()方法应该都会返回当前对象,即 $this。所以才可以使用这样子的连续调用。至于结果是什么还要看实际的代码,但有一点可以肯定的是它会设置或修改对象的某个状态(属性)。这样子下面举一个例子:
class A {
public function get_core()
{
// 其他代码
return $this;
}
public function get_id()
{
// 其他代码
return $this;
}
public function exec()
{
// 这里就可以这样子连续调用了
$this->get_core()->get_id();
}
}
$obj1=new A();
$obj1->get_core()->get_id();
return 返回值并且后面的代码将停止执行
例子1:
b.php文件代码
echo'b';
a.php文件代码
include('b.php');
echo'a';
输出:ba
例子2:
b.php文件代码
echo'b';
return;
echo'bb';
a.php文件代码
include('b.php');
echo'a';
输出:ba
如果例子2去掉return就会返回bbba
例子3:
b.php文件代码
echo'b';
exit;
echo'bb';
a.php文件代码
include('b.php');
echo'a';
输出:b
exit与return还是有区别的exit会终止整个程序
例子4:
function test(){
$a=array(1,2);
//$c=123;
return $a;
//return $c;//这个将不会执行因为上面有一个return;
//return $a.$c;这个写法也不对
}
$b=test();
print_r($b);
输出:Array ( [0] => 1 [1] => 2 )
如果去掉return $a;的话就打印不出来因为没有return只是打印了函数的过程而并没有打印出结果(值)当然我们也可以在函数内部打印然后在调用如:
function test(){
$a=array(1,2);
print_r($a);
}
$b=test();但很多时候,我们都会在函数外面调用操作,所以要用return返回一个值给外面
php 学习之对象的更多相关文章
- JavaScript学习04 对象
JavaScript学习04 对象 默认对象 日期对象Date, 格式:日期对象名称=new Date([日期参数]) 日期参数: 1.省略(最常用): 2.英文-数值格式:月 日,公元年 [时:分: ...
- Javascript学习4 - 对象和数组
原文:Javascript学习4 - 对象和数组 在Javascript中,对象和数组是两种基本的数据类型,而且它们也是最重要的两种数据类型. 对象是已命名的值的一个集合,而数组是一种特殊对象,它就像 ...
- Spring.NET依赖注入框架学习-- 泛型对象的创建和使用
Spring.NET依赖注入框架学习-- 泛型对象的创建和使用 泛型对象的创建方法和普通对象是一样的. 通过构造器创建泛型对象 下面是一个泛型类的代码: namespace GenericsPlay ...
- 深入学习JavaScript对象
JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始 ...
- objc_msgSend消息传递学习笔记 – 对象方法消息传递流程
在Effective Objective-C 2.0 – 52 Specific Ways to Improve Your iOS and OS X Programs一书中,tip 11主要讲述了Ob ...
- ###STL学习--函数对象
点击查看Evernote原文. #@author: gr #@date: 2014-08-13 #@email: forgerui@gmail.com 在stl中,函数对象被大量地使用,用以提高代码的 ...
- PHP面向对象编程学习之对象基础
php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...
- oc学习之对象在内存的位置
对象在内存中的存储 1. 内存中的五大区域. 栈: 存储局部变量. 堆: 允许程序员手动在堆区申请指定的连续的字节数的空间来使用. BSS段: 存储未初始化的全局变量.静态变量. 数据段(常量区): ...
- OC学习16——对象归档
转载自 OC学习篇之---归档和解挡 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOutputStream来进行操作的.当然在操作的这些对象都 ...
- Python学习_01_对象
之前关于python的知识比较零散,这一个系列的随笔将python重新学习整理一遍.学习书籍<Python核心编程>第二版. Python对象基础 python并不是一个单纯面向对象的语言 ...
随机推荐
- tomcat的OutOfMemoryError内存溢出解决方法
在tomcat安装路径bin目录下 打开catalina.bat在第一行加上 set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSi ...
- ubuntu 学习笔记2--安装tomcat
参考维基百科http://wiki.ubuntu.org.cn/Tomcat 安装Tomcat sudo apt-get install tomcat6 设置Tomcat运行的JAVA环境 如果已经设 ...
- C#内获取泛型方法及扩展
C#内获取泛型方法及扩展 C#内我们可以通过反射来动态获取实例方法和静态方法,不管方法存在多少个重载都可以通过GetMethod内的第二个参数去筛选出所要获取的方法,代码如下: type.GetMet ...
- wordpress开启用户注册
很多人想用wordpress打造多用户博客平台 首先想到的是用户注册 今天搞了好长时间,找了好多资料总算找到了 首先开启用户注册 后台 ----设置----常规设置 在成员资格选项中选择任何人都可以 ...
- sqlserver生成随机数 2011-12-21 15:47 QQ空间
-创建视图 create view myview as select re=rand() --自定义函数:取得指定范围的随机数 create function mydata( @a int, @b i ...
- S3C2440之IIC裸机驱动
花了两天的时间终于把这个搞定了,其实I2C的原理还是比较简单的,只是几个细节性的东西还是需要特别的注意,主要是需要注意一下几点: 1.rIICCON &= ~0x10; 清中断必须要在rIIC ...
- Linux内核 hlist_head/hlist_node结构解析
内核中的定义: struct hlist_head { struct hlist_node *first;}; struct hlist_node { struct hlist_node ...
- Dockerfile文件格式的简单介绍
# This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command form ...
- linux添加swap
一. 起因 发现云服务器重装后没有swap分区 于是我们分出一些物理内存做swap分区.. 二. 经过 (1)创建块文件 sudo dd if=/dev/zero of=/tmp/big_swap b ...
- 【Python】32. Longest Valid Parentheses
Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...