Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Richiamare funzioni

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    10

    Richiamare funzioni

    Scusate la domanda basilare,
    Faccio un esempio: ho una classe A che mi estende B, in questa classe ci sono vari metodi è possibile utilizzare i metodi di A dentro se stessa senza riscontrare errori?

    Codice PHP:
    class methods extends Module {


       function 
    __construct()
       {
          
    //....//
       
    }

      
        
    public function 
    recurse($id_category){
       
            
    $this->recurse($value['id_category'); //Qui giustamente funziona richiamando con $this
        
    }
       


    public function 
    getCategory($id_product$id_lang) {
        
            
    $all_child $this->recurse($id_category); //Qua ritorna il seguente errore Using $this when not in object context
            
    }

    Ultima modifica di tovirio; 26-11-2015 a 13:28

  2. #2
    non ha senso quell'errore se quello è lo scenario (immagino gli errori di sintassi siano solo un refuso nel postarci a noi un codice semplificato). Si vede che usi male il tutto o il codice che stai usando è scritto male
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    10
    Ecco il codice corretto e completo ::

    class methods extends Module {


    function __construct()
    {

    $this->tab = 'export';
    $this->version = '1.0';


    parent::__construct();

    $this->page = basename(__FILE__, '.php');

    $this->description = $this->l('Export Google Shoping xml format for products');

    $this->need_instance = 0;
    $this->ps_versions_compliancy = '1.6';

    $this->uri = ToolsCore::getCurrentUrlProtocolPrefix() .$this->context->shop->domain_ssl.$this->context->shop->physical_uri;
    $this->array = array();
    }

    //Ritorna i parent di una categoria
    //@param int $id_category_default
    //@return string $defcat_name

    public function recurse($id_category){
    $a = CategoryCore::getChildren($id_category,1);
    if(empty($a))
    return;
    foreach ($a as $key => $value) {
    $this->array[] = $value['id_category'];
    $this->recurse($value['id_category'], $this->array);
    }
    return $this->array;
    }


    //Restituisce le categorie da stampare di un prodotto
    public function getCategory($id_product, $id_lang) {
    $product = new Product($id_product);
    $category_no_child = array();
    $method = new methods(); //Se non faccio così e uso il $this mi ritorna l'errore "Using $this when not in object context"
    $categorys = $product->getCategories();

    foreach($categorys as $key => $id_category){
    if (empty(CategoryCore::getChildren($id_category, $id_lang)))
    array_push($category_no_child, $id_category);
    }

    foreach($categorys as $key => $id_category) {
    $count = 0;
    $all_child = $method->recurse($id_category); //Qua dovrei usare $this
    if (!empty ($all_child)) {
    foreach ($all_child as $item => $child) {
    if (in_array($child, $categorys, true)) {
    $count++;
    }
    }
    if ($count == 0) {
    $category_no_child[] = $id_category;
    }
    }
    }
    return $category_no_child;
    }

  4. #4
    ma il metodo "getCategory" di "methods" come lo richiami?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    10
    Si, sempre all'interno della stessa classe

  6. #6
    non hai capito: escludendo da dentro la classe methods, da fuori come lo usi?? fai una cosa del genere:

    Codice PHP:

    <?php

    $methods 
    = new methods();

    $methods->getCategory(...,...);
    o fai altro?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    10
    Questo metodo non lo uso mai fuori dalle altre classi, cmq si farei così per richiamarlo nel caso avessi bisogno di farlo fuori dalla sua stessa classe.
    In pratica ho una serie di metodi non statici che vengono richiamati all'interno di un metodo statico tutto dentro la stessa classe.
    Poi richiamo questo metodo statico in maniera statico così:

    nomeClasse::nomemetodo();

  8. #8
    il fatto è che non vedo metodi static li...cmq $method = new methods() non ha senso, sotto dove scrivi $method->recursive userai $this->recursive... se ti da quell'errore si vede che richiami il metodo getCategory su un oggetto non istanziato? boh non capisco bene, al limite posta l'errore che ti da php e non il tuo sunto
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.