Sembra che tu confonda il concetto di oggetto con quello di libreria di funzioni oppure che non ti sia chiaro il concetto di ereditarieta'.
Molto brevemente: una classe deve normalmente rappresentare una entita' che vuoi rappresentare. Quando chiami un metodo di una istanza di una classe, dici a quella entita' di eseguire una certa operazione, tipicamente su se' stessa. Se invece devi eseguire una operazione "su di te", allora devi vedere se e' il caso che la classe che stai sviluppando sia legata alla classe da un legame di ereditarieta'.
Il classico esempio e' questo:
codice:
class Person {
private $name;
public function getName() {
return $name;
}
public function setName($newName) {
$this->name = $newName;
}
class Employee extends Person {
private $company;
public function introduceYourself() {
print("Hello, my name is " . $this->name . " and I work for " . $company);
}
}
Se tu invece hai bisogno di chiamare un metodo generico, magari che effettua un calcolo, allora questo e' il caso dei cosiddetti metodi statici, ovvero slegati da una istanza specifica di una classe.
codice:
public class MathUtil {
public static abs($value) {
if ($value > 0)
return $value;
else
return -$value;
}
}
I metodi statici sono indispensabili ma e' necessario non abusarne, specie in un linguaggio come il PHP che non e' OOP.
PS: La soluzione proposta e' terribile, a meno che l'oggetto 2 non sia una proprieta' dell'oggetto 1, nel qual caso va dichiarata come propreita' dell'oggetto 1.
PS2: Inizia a utilizzare la terminologia giusta. Una classe ha dei metodi, non delle funzioni, anche se PHP ti obbliga a utilizzare la keyword function.