web-dev-qa-db-fra.com

Comment utiliser une classe dans une fonction cron

  • J'ai des jobs cron qui fonctionnent avec succès dans WordPress,
  • Cependant, lorsque j'essaie d'appeler une classe à partir de la fonction cron, elle ne s'exécute pas.
  • Comment pourrais-je appeler une classe avec une fonction cron?

add_action( 'hourly_event', 'hourly_function' );
function hourly_function() {
   // This otherwise works when not within a cron job function
   $newClass = new newClass();
   $newClass->newClass_function($var1, $var2, $var3); 
}

$ newClass est déclaré dans le plugin.


require plugin_ROOT.'Gd-text/Box.php';
require plugin_ROOT.'Gd-text/Color.php';
require plugin_ROOT.'Gd-text/HorizontalAlignment.php';
require plugin_ROOT.'Gd-text/TextWrapping.php';
require plugin_ROOT.'Gd-text/VerticalAlignment.php';

use GDText\Box;
use GDText\Color;


class newClass {

    public function newClass_function($var1, $var2, $var3){
    }
}
1
Jimmy PHP

Vous appelez une fonction avec des variables non définies et indispensables au bon fonctionnement de la fonction.

function hourly_function() {

   $newClass = new newClass();

   $var1 = 'this should';
   $var2 = 'work with';
   $var3 = 'some content';

   $newClass->newClass_function($var1, $var2, $var3); 
}

Vous voudrez peut-être déplacer ces variables vers un __construct

if ( ! class_exists('AClass')) {
    class AClass {
        function __construct( $var1 = null, $var2 = null, $var3 = null ) {
            //...
        }
    }
}
$instance = new AClass(1,2,3);

Ou la méthode __invoke:

if ( ! class_exists('BClass')) {
    class BClass {
        function __invoke( $var1 = null, $var2 = null, $var3 = null ) {
            //...
        }
    }
}
$instance = new BClass();
$instance(1,2,3);
1
jgraup