<?php class Main { public function findSub($name = null) { Sub::show($name); } } class Sub { public function show($name = null) { echo 'I am ' . $name; } } $main = new Main; $main->findSub('chan'); // I am chan As I remembered, if you want to use another class by className::functionName(), you need to declare the function as static, in this case I call show in static way without declare the function as static function, but it still work, how come?