[phpsoa] Re: problem with require_once and global

2007-03-14 Thread Matthew Peters

Hi mbertazz,
This is a tricky little problem. The essence of the problem is that
config.php only expects to find itself called from the very top level
script, where all variables are global. That is why it does not bother
to do global $CFG itself. However, when we call pippo.php for the
first time e.g. from a client script like:
?php
  /* client.php */
  include_once('SCA/SCA.php');
  $s = SCA::getService('pippo.php');
  echo $s-m1('a','b');
?

then the require_once(config.php) is being called from a script that
is already several calls down from in the call stack.

The following fix works for calling the component locally:
?php
  /* client.php */
  require_once('config.php');
  include_once('SCA/SCA.php');
  $s = SCA::getService('pippo.php');
  echo $s-m1('a','b');
?

whihc gets the call to config.php done nice and early.

I haven't checked what will happen when we use the pippo.php as the
target of a webservice call, when it will be being called at the top
level again. I will try that tomorrow.

Hope that helps,
Matthew

On Mar 14, 12:27 am, mbertazz [EMAIL PROTECTED] wrote:
 Hi everybody,
 to be clear i will explain my problem using the code below.

 My problem is: when i use m1 i obtain this error:

 [Wed Mar 14 01:20:37 2007] [error] PHP Notice:  Fatal: CFG is not
 configured! Exiting. in /home/messe318/setup.php on line 93
 /home/messe318/setup.php(93) : Notice - Fatal: CFG is not configured!
 Exiting.

 why global $CFG doesn't wok into setup.php using SCA (if i call
 setup.php directly it work) ?

 the problem is i can't change config.php and setup.php, i can chage
 pluto.php and pippo.php.

 thank you in advance.
 mbertazz

 ?php
 /* pippo.php */

 include SCA/SCA.php;

 /**
  *
  * @service
  * @binding.ws
  *
  */
 class pippo
 {

 /**
  *
  * @reference
  * @binding.php Pluto.php
  */
  public $pluto;

 /**
  *
  * @param string $a
  * @param string $b
  * @return string
  */
 function m1($a,$b){
 return $this-pluto-m2($a,$b);
 }}

 ?

 ?php
 /* Pluto.php */

 require_once('config.php');

 class Pluto
 {
 function m2($a, $b){
 global $CFG;
 m3();
 return $a.$b;
 }}

 ?

 ?php
 /* config.php */

 unset($CFG);

 $CFG-k= '123';
 $CFG-z= '456';

 require_once(setup.php);
 ?

 ?php
 /* setup.php */

 global $CFG;

 if (!isset($CFG-k)) {
 trigger_error('Fatal: CFG is not configured! Exiting.');
 die;
 }

 function m3()
 ...
 ?


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
phpsoa group.
To post to this group, send email to phpsoa@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.co.uk/group/phpsoa?hl=en
-~--~~~~--~~--~--~---



[phpsoa] Re: problem with require_once and global

2007-03-14 Thread mbertazz

hi Matthew,
thank you very much for your help.

 I haven't checked what will happen when we use the pippo.php as the
 target of a webservice call, when it will be being called at the top
 level again. I will try that tomorrow.

yes, this is the real problem i found: i'm calling it as the target of
a webservice call.

thank you again,
mbertazz

On Mar 14, 6:24 pm, Matthew Peters [EMAIL PROTECTED]
wrote:
 Hi mbertazz,
 This is a tricky little problem. The essence of the problem is that
 config.php only expects to find itself called from the very top level
 script, where all variables are global. That is why it does not bother
 to do global $CFG itself. However, when we call pippo.php for the
 first time e.g. from a client script like:
 ?php
   /* client.php */
   include_once('SCA/SCA.php');
   $s = SCA::getService('pippo.php');
   echo $s-m1('a','b');
 ?

 then the require_once(config.php) is being called from a script that
 is already several calls down from in the call stack.

 The following fix works for calling the component locally:
 ?php
   /* client.php */
   require_once('config.php');
   include_once('SCA/SCA.php');
   $s = SCA::getService('pippo.php');
   echo $s-m1('a','b');
 ?

 whihc gets the call to config.php done nice and early.

 I haven't checked what will happen when we use the pippo.php as the
 target of a webservice call, when it will be being called at the top
 level again. I will try that tomorrow.

 Hope that helps,
 Matthew

 On Mar 14, 12:27 am, mbertazz [EMAIL PROTECTED] wrote:



  Hi everybody,
  to be clear i will explain my problem using the code below.

  My problem is: when i use m1 i obtain this error:

  [Wed Mar 14 01:20:37 2007] [error] PHP Notice:  Fatal: CFG is not
  configured! Exiting. in /home/messe318/setup.php on line 93
  /home/messe318/setup.php(93) : Notice - Fatal: CFG is not configured!
  Exiting.

  why global $CFG doesn't wok into setup.php using SCA (if i call
  setup.php directly it work) ?

  the problem is i can't change config.php and setup.php, i can chage
  pluto.php and pippo.php.

  thank you in advance.
  mbertazz

  ?php
  /* pippo.php */

  include SCA/SCA.php;

  /**
   *
   * @service
   * @binding.ws
   *
   */
  class pippo
  {

  /**
   *
   * @reference
   * @binding.php Pluto.php
   */
   public $pluto;

  /**
   *
   * @param string $a
   * @param string $b
   * @return string
   */
  function m1($a,$b){
  return $this-pluto-m2($a,$b);
  }}

  ?

  ?php
  /* Pluto.php */

  require_once('config.php');

  class Pluto
  {
  function m2($a, $b){
  global $CFG;
  m3();
  return $a.$b;
  }}

  ?

  ?php
  /* config.php */

  unset($CFG);

  $CFG-k= '123';
  $CFG-z= '456';

  require_once(setup.php);
  ?

  ?php
  /* setup.php */

  global $CFG;

  if (!isset($CFG-k)) {
  trigger_error('Fatal: CFG is not configured! Exiting.');
  die;
  }

  function m3()
  ...
  ?- Hide quoted text -

 - Show quoted text -


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
phpsoa group.
To post to this group, send email to phpsoa@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.co.uk/group/phpsoa?hl=en
-~--~~~~--~~--~--~---