Disclaimer: I did not deal with php after a while, so my syntax may be incorrect.
The term OOP is a little fuzzy imo, which means that different people will think about slightly different things when they hear it, so do not confuse it when you hear conflicting things about it.
Structuring such functions with classes will not hurt your code, but then you simply use classes as namespaces for your functions. Usually you need to define classes in such a way as to encapsulate any aspect of your system, which means that only the code of this class will deal with this aspect directly, and everyone else simply uses this class.
For example, you might have a class that manages the print job queue. If you have any code that wants to print a document, it does not need to know how and where jobs are queued or how they are sent to the printer, it only needs to know the print queue object (call it $jobQueue ), which can have a method like $jobQueue->enqueue($document) .
Now you can say: "In this code, you could use the global function enqueueJob($document) ", and this is true until you want to have more than one queue (for different printers) and queues that work differently (store jobs in the database, in memory or not at all - imagine a queue that goes directly to the recycling bin :)). With OOP, this scenario is not a problem, and these details are completely hidden from the code that the document wants to print - all he needs is that it has a job queue object using the enqueue method.
To get this “interchangeability” of job queues, they must have a common interface (in this case, the enqueue method) that must be carefully chosen to cover all the needs of code that wants to print things, but without making too many assumptions about print queue is running. For example, you can imagine that the enqueue method takes a file path as an argument that tells the queue where to store its files, but this interface would be useless for the queue that runs in the database. This is the art of finding good abstractions.
Now, to get back to your original question, simply hiding related functions in a class is, in my opinion, not OOP, as long as there is no thought about what abstractions / interfaces a new class should provide. Without this, all the code that this new class uses will be tightly bound to it and will need to be changed / revised if you ever decide that you need a different type of print queue. :)
However, "not OOP" is not the same as "not a good idea." I say, follow him and reorder your functions. In my opinion, it is important to keep in mind that not everything should be an object or correspond to some abstraction. But maybe you will find out that you have some functions that perform similar things (a queue in a file, a queue in a database) that can be abstracted to a common interface.