Wordpress Custom Hook with Class method

The code described below works normally outside of wordpress, but in wordpress I get warning expects parameter 1 to be valid callback function mycars ($ mycarsclass) not found. If I remove $ mycarsclass and leave only add_node, it works normally. How do I enable this for mycars ($ mycarsclass) to be valid? Is this possible in wordpress?

?php
class mycarsclass {
  public $car1;
  public $car2;
function add_node($args) {
    echo 'div class=demoI lake ' . $args['car1'] . 'and' . $args['car2'] . '/div';
}
}
$mycarsclass = new mycarsclass();

function mycars($mycarsclass){
     //$mycarsclass = new mycarsclass(); If I add directly to the function it works normally, if the output does not work
    $args = array(
    'car1' = 'Volvo',  
    'car2' = 'Toyota'
    ); 
    
    $mycarsclass-add_node($args);  
}

add_action('mycarsaction','mycars($mycarsclass)'); // 'mycars' It must be without ($mycarsclass) if $mycarsclass = new mycarsclass (); in function mycars
do_action('mycarsaction');
?

Topic oop functions php hooks plugins Wordpress

Category Web


You can use an anonymous function with PHP's use statement like so:

function mycars($mycarsclass){
     
    $args = array(
    'car1' => 'Volvo',  
    'car2' => 'Toyota'
    ); 
    
    $mycarsclass->add_node($args);  
}

add_action('mycarsaction', function () use ($mycarsclass) {
    mycars($mycarsclass);
});
do_action('mycarsaction');

or declare a separate function and pass that:

function mycars($mycarsclass){
     
    $args = array(
        'car1' => 'Volvo',  
        'car2' => 'Toyota'
    ); 
    
    $mycarsclass->add_node($args);  
}

function mycars_mycarsclass() {
    $mycarsclass = new mycarsclass();
    mycars($mycarsclass);
}

add_action('mycarsaction', 'mycars_mycarsclass');
do_action('mycarsaction');

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.