Re: [PHP] optional object arguments to a function

[email protected] (Jochem Maas)
Newsgroups php.general
Message-ID <[email protected]>
Op 2/13/10 8:05 AM, Michael A. Peters schreef:
> I've started working on a class using DOMDocument to assemble MathML in
> php. The class, assuming I actually succeed, will eventually be used for
> parsing LaTeX math equations to MathML without the need to have TeX
> installed. I probably won't be able to support all the possibilities for
> equations that LaTeX does w/o a TeX install (and definitely not user
> defined macros) but I suspect I can (hopefully) cover most of the common
> stuff.
> 
> One thing I don't know how to do, though, is write a function where
> arguments are optional object.
> 
> IE for a function to generate an integral, the limits are optional but
> if specified must be an object (since they may be an equation
> themselves). I want the default to be some kind of a null object so I
> know to do nothing with it if it is null.
> 
> With string/integer you just do
> 
> function foo($a='',$b='',$c=false) {
>   }
> 
> How do I specify a default null object, or otherwise make the argument
> argument optional?

this first one doesn't work:

<?

class Foo
{
	function dobar(stdObject $o = null) { /* ... */ }
}

$e = new Foo;
$f = new Foo;

$f->dobar();			// works
$f->dobar($e);			// catchable fatal
$f->dobar((object)array());	// catchable fatal - check the error msg!?!?

?>

... but if you're able/willing to specify a user defined class then you
have this option:

<?php

class Bar {}

class Foo
{
	function dobar(Bar $o = null) { /* ... */ }
}

$b = new Bar;
$f = new Foo;

$f->dobar($b);
$f->dobar();

?>

>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.