Ясно, что когда есть класс Cell и мне нужно создать несколько экземпляров класса, я делаю $cell_i= new Cell() и работаю $cell_i->paint(). А как быть, если класс это некоторое объединение методов и нет необходимости создавать много экземпляров класса, а лишь в начале проекта сделать $MyFunc = new MyFunc()? И вроде всё удобно, пока не появляется необходимость использовать методы одного класса, в методах другого. В таком случае одна строка MyFunc::sum() гораздо удобней, чем две строки $MyFunc = new MyFunc() + $MyFunc->sum().
1. Как правильно поступать в случае описанном выше?
2. Как в том же Laravel по коду используется статический вызов Crypt::encrypt(), но внутри метод устроен как динамический ($this->...)?
UPD. Насколько я понял, в Laravel используется паттерн singleton и раз он там используется, значит это нормальная практика?