すみません、2点質問したい事があるのですが、

function test($x, $y='bbb', $z='ccc'){
 echo $x, $y;
}
test('aaa', $z='zzz');
これだとaaazzzcccと出力されますが、期待通りaaabbbzzzと出力させるようにすることは可能でしょうか?
($yと$zを逆にする以外でお願いします。pythonで出来たのでphpでもする方法がないかと思って質問しました。)

class MyClass {
 public function test(){
  echo 'test';
 }
}
function test(){
 global $myclass;
 $myclass->test();
}
$myclass = new MyClass();
test();
これは期待通り動きますが、$myclassを関数内で扱う時毎回このようにglobal宣言するのは
少し面倒な上、不格好になってしまいます。
これを防ぐにはどのように書けばいいのでしょうか?

どなたかアドバイスよろしくお願いします。