Casiva Agustin

Engineering, Development and IT Management

Hi there! 👋

I’m Agustin Casiva, I’m a Software Engineer from Argentina.

I have been working on IT for many years now, I worked in many fields of the industry, such as hardware support, networking, sysadmin but what I do love most is development.

I have worked for many organizations, public and private, local and remote, filling many roles.

My expertise is on Web Development, Linux, Open Source, CMSs, HTML, CSS, PHP, JavaScript, Backend Development, Product Development, Project Management, Team Leading, among others.

In 2013 I have founded 42mate, a Web Development Agency focused on the design, development, maintenance of Web Apps. I still work on 42mate where I work leading development teams and scoping new projects.

Besides 42mate I also work as an independent consultant where I provide services such as

  • Development Training, for individuals or teams.
  • Architecture Design and Review.
  • Tech Advisor for non tech startup founders.
  • Tech Advisor for Digital Design Agencies.

If you are interested on my services let’s talk!

More about me

Encontrar donde se define una clase usando el nombre de la clase

En un proyecto en el que me encuentro trabajando surgió la necesidad de implementar un módulo para OAuth, tenía que bajar el módulo y comenzar a usarlo. Cuando quiero comenzar a usarlo me salta un error que la clase OAuthException ya había sido declarada previamente.

Lo primero que se me vino a la mente es que el archivo que tenía la clase estaba siendo incluido mas de una vez, cuando me pongo a debuggear no era el caso, el archivo no estaba siendo incluido mas de una vez.

Lo segundo que pienso es que la clase estaba definida en algún otro módulo, así que grepeo todo el fuente del proyecto para buscar la definición de la clase en otro lado, el resultado fue que no había otra definición, solo la del módulo que acababa de instalar.

Después de mucho buscar y buscar, se me vino a la mente de buscar donde estaba el archivo en función del nombre de la clase, googleando un poco me encontré en stackoverflow con la clase ReflectionClass la cual posee varios métodos interesantes, entre ellos el método getFileName, este a partir del string con el nombre de la clase devuelve el path al archivo donde la clase fue definida. Aquí un ejemplo

$reflector = new ReflectionClass('Foo');
echo $reflector->getFileName();

Ya estamos dije yo, cuando corro esto para ver que me decía mi sorpresa vino de que este me devolvía vacío. Pensando un poco mas me doy cuenta que si la clase es parte de una extensión o nativa de PHP difícilmente este en un archivo, así me encontré con este otro método de la misma clase, isInternal, el cual me dio verdadero.

Con eso me saque la duda de donde venía la clase, el paso siguiente fue revisar mi lista de extensiones y me encontré con que tenía una extensión pecl para oauth (la cual instalé para otro proyecto hace bastante) y la misma definía una clase con el mismo nombre, algo que no debería pasar en las nuevas versiones de PHP si usamos espacios de nombre.

Para solucionarlo desactive la extensión y seguí codeando.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

*