SAMP + Composer (PHP) ¿Es posible?

Aprende lo que no sabes de este lenguaje y encuentra herramientas y códigos útiles.

Moderador: Ayudantes

Reglas del Foro
  • Si tu código es corto, no crees un tema nuevo para liberarlo, publica un mensaje en el tema [Funciones] ¡Publica tu código aquí!.
  • Si creas una guía, debes explicar el código claramente. Evita poner la explicación en forma de comentarios dentro del mismo y no olvides utilizar el BBCode correspondiente: [Pawn]Código aquí[/Pawn].
  • No postear códigos sin probar. Publicar códigos con errores (que impidan compilar el script para el cual está destinado) en este apartado es motivo de sanción.
  • Si tu código necesita plugins, includes u otros códigos adicionales para funcionar, debes mencionarlo en el mensaje.
  • Si has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).
  • Si tu aporte es para un GameMode en específico, debes publicar el tema en el apartado "Guías y Aportes para GameModes específicos".
Responder
Avatar de Usuario
FR0Z3NH34R7
Junior
Junior
Mensajes: 70
Registrado: 10 Jul 2017 13:44
Contactar:
Reputación: 15

13 Ago 2018 14:18

Imagen

¡Saludos comunidad! Jugando un poco con PHP, Pawn, y composer, me di cuenta que tenemos a mano una gran herramienta que creo que se nos pasó de largo todo este tiempo, hoy vengo a mostrarles una forma más fácil de instalar librerías a nuestro servidor SAMP y también una forma nueva para programar y ayudarnos entre todos. ¡Comenzemos!


¿Qué es Composer?
Composer es un manejador de dependencias (no un gestor de paquetes). Pero es cierto que trata con paquetes y librerías, la instalación siempre es local para cualquier proyecto, las librerías se instalan en un directorio por defecto (normalmente es /vendor). Composer es capaz de instalar las librerías que requiere tu proyecto con las versiones que necesiten. ¿Y si mis librerías dependen de otras? También es capaz de resolver eso y descargar todo lo necesario para que funcione y así quitarnos del dolor de cabeza de hacer todo eso de forma manual.
¿Qué problemas resuelve Composer?
Tienes un proyecto que depende de ciertas librerías desarrolladas por terceros, y a su vez, éstas librerías también dependen de otras (tú no tienes porqué conocer estas librerías), lo que hace Composer en este caso es averiguar que librerías deben instalarse; es decir, resuelve todas las dependencias indirectas y descarga automáticamente la versión correcta de cada paquete.
¿Qué necesito?
Necesitas instalar composer, para esto necesitarás tener instalado al menos una versión de PHP superior a 5.2

Descarga: https://getcomposer.org/
Entonces, ¿Como podría usar Composer?
Proyectos (Server) en Composer: Mostrar
Primero que nada debemos tener en cuenta que el archivo server.cfg debe ser ignorado por github (Agregarlo a gitignore) por que de caso contrario podríamos arruinar la configuración del usuario.
Pero tranquilo, crea un archivo llamado "example.cfg" y composer detectará si el usuario usa una configuración o si necesita el archivo, entonces, le cambiará el nombre automaticamente a "server.cfg"

Para registrar tu proyecto con composer deberás crear un archivo llamado

Código: Seleccionar todo

composer.json
en el directorio raíz de tu proyecto con este formato:

Código: Seleccionar todo

{
    "name": "forwarddevs/pruebasamp",
    "description": "SAMP with composer.",
    "keywords": ["samp", "composer", "pcu", "samp"],
    "license": "MIT",
    "type": "project",
    "require-dev": {

    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('server.cfg') || copy('example.cfg', 'server.cfg');\""
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    "require": {
        "forwarddevs/testpackagesamp": "^1.0"
    }
}
ClaveDescripción
name El nombre de nuestro proyecto ejemplo: autor/nombrepaquete
description Descripción de nuestro proyecto.
keywords Las palabras clave para encontrar nuestro proyecto en la web, no olvides agregar los keywords "samp", "pawn"
type Si queremos registrar un proyecto, entonses aquí pondremos "project" , en caso contrario eliminar la linea.
require ¿Nuestro proyecto utiliza dependencias de terceros? aquí podras agregarlos.
Es necesario que tengas al menos un release en tu repositorio.
Luego de esto deberemos subir los archivos a nuestro repositorio GitHub, y registrarlo en https://packagist.org/

¡Listo! Ya cualquier persona podrá instalar tu proyecto usando el cmd 'composer create-project forwarddevs/pruebasamp nombrecarpeta'.

EJEMPLO: https://github.com/Forward-Devs/pruebasamp
Dependencias nuevas: Mostrar

El proceso es similar al de los proyectos nuevos.

Formato:

Código: Seleccionar todo

{
  "name": "forwarddevs/testpackagesamp",
  "description": "Sistema de Actores para SAMP",
  "license": "MIT",
  "keywords": [
    "SAMP package",
    "samp"
  ],
  "support": {
    "issues": "https://github.com/Forward-Devs/testpackagesamp/issues",
    "source": "https://github.com/Forward-Devs/testpackagesamp"
  },
  "authors": [
    {
      "name": "FR0Z3NH34R7",
      "email": "[email protected]",
      "homepage": "http://facebook.com/ForwardDevsES",
      "role": "Developer"
    }
  ],
  "require": {
  }
}
EJEMPLO: https://packagist.org/packages/forwardd ... ackagesamp
¿Cómo instalo una dependencia?: Mostrar
Abre la consola (CMD) y dirigete a la carpeta raíz de tu proyecto, aquí podrás utiizar el comando "composer require autor/paquete" por ejemplo:

Código: Seleccionar todo

composer require forwarddevs/testpackagesamp
y los archivos de la dependencia se instalaran en la carpeta vendor/autor/paquete

¿Ejemplos?
EJEMPLO DE PROYECTO
EJEMPLO DE DEPENDENCIA

ForwardDevs - Desarrollo Web
FAN PAGE
+54 9 11 4144 9924
https://www.forwarddevs.com

¡Buscamos personal!

Avatar de Usuario
#Fede
Moderador Global
Moderador Global
Mensajes: 3135
Registrado: 12 Ene 2015 06:32
Ubicación: Montevideo, Uruguay.
Reputación: 75

13 Ago 2018 14:47

Por la idea que das en el post, es como sampctl. Muy interesante el contenido que has publicado últimamente en el foro -thumbup .
Estoy fuera de SA-MP, no me envíen mensajes privados invitándome a proyectos.


scriptnoob escribió:Cada día se va mejorando el foro, nuestro objetivo es como el de una empresa:

Misión: Brindar ayuda y aportes a los usuarios.
Visión: Ser la página de mayor calidad de servicio de soporte referidos a lenguajes de programación.
Lee las reglas del foro para evitar ser sancionado




Avatar de Usuario
Graber
Junior
Junior
Mensajes: 194
Registrado: 10 Abr 2016 19:16
Contactar:
Reputación: 22

13 Ago 2018 15:44

Tiene algunas fallas:

Ya hay sampctl
Composer es para PHP
Por que deberia resubir todos los plugins cuando ya estan en github?
Tengo dependencias privadas en un GitLab privado, ni loco las voy a subir

No esta mal despues de todo, pero vaya a saber quien le dara soporte a eso
Imagen

No doy soporte por privado y no estoy disponible para ningún trabajo/proyecto/lo que sea. Eviten MPs de ese tema

Avatar de Usuario
FR0Z3NH34R7
Junior
Junior
Mensajes: 70
Registrado: 10 Jul 2017 13:44
Contactar:
Reputación: 15

13 Ago 2018 16:55

Graber escribió:
13 Ago 2018 15:44
Tiene algunas fallas:

Ya hay sampctl
Composer es para PHP
Por que deberia resubir todos los plugins cuando ya estan en github?
Tengo dependencias privadas en un GitLab privado, ni loco las voy a subir

No esta mal despues de todo, pero vaya a saber quien le dara soporte a eso
Hablamos de extensiones de código, Composer lleva mucho mas tiempo que sampctl , (hasta lo que se,y si alguien se hubiese avivado antes hubiese sido de gran ayuda para muchos.) es muy fácil y nos da otras opciones, como ejecutar comandos al instalar el proyecto. Te doy un ejemplo de lo que se podría hacer: Con un solo comando podrías descargar el servidor, con su web, configurar la web y migrar las bases de datos, dejando un servidor listo para usar con tan solo un comando.
Por mi parte elijo una alternativa a sampctl, y usare composer como gestor.
ForwardDevs - Desarrollo Web
FAN PAGE
+54 9 11 4144 9924
https://www.forwarddevs.com

¡Buscamos personal!

Avatar de Usuario
Graber
Junior
Junior
Mensajes: 194
Registrado: 10 Abr 2016 19:16
Contactar:
Reputación: 22

13 Ago 2018 17:42

Lo unico que puedo hacer es desearte buena suerte subiendo todos los plugins por ti mismo a packagist, hacer manifests de aplicaciones (que ya estan hechos para sampctl) y hacer scripts de instalar plugins cada rato, mientras usas una herramienta que no es la que los desarolladores grandes de SA-MP (Y-Less, Zeex, Slice etc,) usan y tener que mantener esto todo por tu cuenta, haciendo trabajo doble que ya se hizo por toda la comunidad inglesa.
Imagen

No doy soporte por privado y no estoy disponible para ningún trabajo/proyecto/lo que sea. Eviten MPs de ese tema

Responder