2016-11-21 2 views
0

У меня есть класс nusoap, с некоторыми методами, определенными в конструкторе. Однако проблема, с которой я столкнулась, заключается в вызове метода либо из загруженной модели, либо из метода, определенного в том же классе из конструктора. Ошибка, которую я получаю, это «Использовать $ this, если не в контексте объекта». Ни один из методов не является статическим, поэтому я не уверен, почему у него проблемы с доступом. Для справки, вот пример того, что я пытаюсь сделать.

edit: Это мой первый опыт работы с nusoap, и методы были определены в конструкторе во всех примерах, которые я видел. Если методы не нужно определять в конструкторе, где я их определяю?

class MySoapServer extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 
     //where I'm loading all my models and libraries, 
     //creating a new instance of soap server 
     //and registering all my methods 


     function myFunction() { 
      $this->testFunction() //this is where it errors out 
     } 
    } 

    function testFunction() { 
     return true; 
    } 
} 

ответ

0

Ваша функция в другой функции, она должна выглядеть следующим образом:

class MySoapServer extends CI_Controller { 
    function __construct() { 
     parent::__construct(); 
     //where I'm loading all my models and libraries, 
     //creating a new instance of soap server 
     //and registering all my methods 


    } 
    function myFunction() { 
     $this->testFunction() //this is where it errors out 
    } 
    function testFunction() { 
     return true; 
    } 
} 

То, что вы, кажется, пытаются сделать, это запустить функции теста() в конструкторе? Если это так, myFunction() не требуется, и вам просто нужно добавить $ this-> testFunction() в конец конструктора.

Как это:

class MySoapServer extends CI_Controller { 
     function __construct() { 
      parent::__construct(); 
      //where I'm loading all my models and libraries, 
      //creating a new instance of soap server 
      //and registering all my methods 
      $this->testFunction(); 
     } 
     function testFunction() { 
      return true; 
     } 
    } 
+0

Это просто пример простоты, мои функции делают намного больше, чем просто возвращают true. – Kate

+0

Я бы так подумал, но это все еще не оправдывает функции в конструкторе. Можете ли вы объяснить, почему вы чувствуете необходимость этого? –

0

Я не эксперт по NuSOAP но PHP не обрабатывает вложенные функции очень хорошо. Почему вы объявляете «myFunction» внутри конструктора? Попробуйте удалить вложенную функцию из конструктора. Кроме того, вы можете попытаться установить модификаторы доступа функции.

+0

Причина, по которой я использую его в конструкторе, заключается в том, что для используемого sdk требуется ряд функций, которые нужно вызывать со своими переданными параметрами. Если я определяю их вне конструктора, мне нужно будет самим вызвать методы, не имея параметров для поставки – Kate

Смежные вопросы