. 如何跳出php的 构造函数 , 类, 或方法 ?

骄傲青蛙 2010-01-04 02:26:46
看代码
class B  // ....  略

class A extents B
{
function __construct()
{
if( $a > 1 ) //这里如何跳出, 或终止执行, 不能用exit
}

function a()
{
echo 'this is a.';
}

function b()
{
echo 'this is b.';
}
}


//要执行的代码是这样
$test = new A;
$test->a(); // 假设执行这方法时, 构造函数里$a>1, 则跳出不执行, $a的判断只能发生在构造函数内
...全文
386 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
daxiongshishen 2011-06-21
  • 打赏
  • 举报
回复
<?php

?>
kxgsy163 2010-01-14
  • 打赏
  • 举报
回复
__call
骄傲青蛙 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wisword 的回复:]
return ;
[/Quote]

这个只能跳出函数, 和方法
骄傲青蛙 2010-01-05
  • 打赏
  • 举报
回复
谢谢 江南昆虫詳細的回答, 其实两种方法都考虑过, 但还是不能实现要达到的效果,

后来把代码执行的流程重新设计了一下, 使到构造函数能用exit跳出又不影响其它功能正常运行
江南昆虫 2010-01-05
  • 打赏
  • 举报
回复
方法二:

<?php
class A
{
protected $show_a = true;
function __construct($a = 0)
{
$this->show_a = !($a > 1);
}

function aa()
{
if($this->show_a) echo 'this is a.';
}

function bb()
{
echo 'this is b.';
}
}
echo '11';
$test = new A;
$test->aa();
echo '<br/>22';
$test = new A(3.2);
$test->aa();
echo '<br/>33';
$test = new A(0.5);
$test->aa();
?>
江南昆虫 2010-01-05
  • 打赏
  • 举报
回复
你的类叫A,方法就别叫a了,要不然也变成构造函数了。
方法一:

<?php
class A
{
function __construct($what = 'aa')
{
($what != 'aa') ? $this->bb() : $this->aa();//二选一之一
method_exists($this,$what) ? $this->$what() : print('no A::'.$what.'()!');//二选一之二
}

function aa()
{
echo 'this is a.';
}

function bb()
{
echo 'this is b.';
}
}
$test = new A;
echo '<br/>';
$test = new A('bb');
echo '<br/>';
$test = new A('cc');
?>
wisword 2010-01-05
  • 打赏
  • 举报
回复
return ;
骄傲青蛙 2010-01-04
  • 打赏
  • 举报
回复
up up 没人知道 ?
骄傲青蛙 2010-01-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kxgsy163 的回复:]
汗!!!

构造函数是在实例化类的似时候执行吧。。


[/Quote]

嗯, 是, 那怎么决定在实例化后是否再执行其它内容呢, ?

还有怎么跳出一个方法 ?
kxgsy163 2010-01-04
  • 打赏
  • 举报
回复
汗!!!

构造函数是在实例化类的似时候执行吧。。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧