Edit report at http://bugs.php.net/bug.php?id=52970&edit=1
ID: 52970
User updated by: ymdf at qq dot com
Reported by: ymdf at qq dot com
Summary: The Bug of unset
-Status: Feedback
+Status: Open
Type: Bug
Package: Output Control
Operating System: windows/linux/...
PHP Version: 5.3.3
Block user comment: N
New Comment:
index.php
<?
require_once 'sys/Rout.php';
$rout = new Rout();
$rout->__destruct();
unset($rout);
?>
___________________________________________________________
sys/Rout.php
<?
class Rout {
public function __construct(){
$this->__destruct();
}
public function __destruct() {
echo '<br>',dirname(__FILE__);
$path = 'App/controls/IndexControl.php';
echo '<br>',$path.' ';
echo file_exists($path) ? 'Work' : 'Change includ_path';
require_once $path;
}
}
?>
____________________________________________________________
output:
D:\Zend\Apache2\htdocs\Zanfsys\Zanf
App/controls/IndexControl.php Work
D:\Zend\Apache2\htdocs\Zanfsys\Zanf
App/controls/IndexControl.php Work
D:\Zend\Apache2\htdocs\Zanfsys\Zanf
App/controls/IndexControl.php Change includ_path
_________________________________________________________
error:
[02-Oct-2010 19:26:09] PHP Warning:
require_once(App/controls/DefaultControl.php) [<a
href='function.require-
once'>function.require-once</a>]: failed to open stream: No such file or
directory in D:\Zend\Apache2\htdocs\adminsys\sys\Zanf_Rout.php on line
121
[02-Oct-2010 19:26:09] PHP Fatal error: require_once() [<a
href='function.require'>function.require</a>]: Failed opening required
'App/controls/DefaultControl.php' (include_path='.') in
D:\Zend\Apache2\htdocs\adminsys\sys\Zanf_Rout.php on line 121
Previous Comments:
------------------------------------------------------------------------
[2010-10-02 20:17:32] [email protected]
Sorry, I didn't understand the issue here. The location against which
relative paths are calculated changes? How?
Please provide a list of steps necessary to reproduce the problem (and
write syntactically correct sentences if possible).
------------------------------------------------------------------------
[2010-10-02 15:49:49] ymdf at qq dot com
in_run: iswork
in_destruct: iswork
out $rout->run: iswork
out $rout->destruct: iswork
out unset($rout): error
------------------------------------------------------------------------
[2010-10-02 15:47:52] ymdf at qq dot com
Description:
------------
Destructor if the class has a path variable $path = 'asd.php',
Uset to call the function with a class destructor that address the
relative
position will change.
Test script:
---------------
index.php
<?php
require_once 'Router.php';
$route = new Router();
echo '<br>out $rout->run:';
$route->run();
echo '<br>out $rout->destruct:';
$route->__destruct();
echo '<br>out unset($rout):';
unset($route);
?>
Router.php
class Router {
private function __construct() {
$this->run();
echo '<br>in_destruct:';
$this->__destruct();
}
public function run() {
$f = 'App/controls/indexControl.php';
if (file_exists($f)) echo ' work';
else echo ' serror';
}
public function __destruct(){
$f = 'App/controls/indexControl'.php';
if (file_exists($f)) echo ' work';
else echo ' error';
}
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52970&edit=1