Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP vs Frameworks

Pawel Dyrek
November 15, 2018
77

PHP vs Frameworks

Most of the modern applications are built using a certain framework, instead of 'vanilla' language.
On the example of PHP, I would like to present what framework is, and why it is highly beneficial to use one.

Pawel Dyrek

November 15, 2018
Tweet

Transcript

  1. Agenda: Co to jest framework? MVC Kiedy używać frameworków? Dlaczego

    symfony? Jak wygląda Symfony? Bazy danych PHP vs Frameworks
  2. Co to jest framework? Framework jest szkieletem do budowy aplikacji.

    Programista tworzy aplikację, rozbudowując i dostosowując poszczególne komponenty do wymagań realizowanego projektu, tworząc w ten sposób gotową aplikację PHP vs Frameworks
  3. Co to jest framework? Framework ≠ biblioteka Odwrócenie sterowania –

    w odróżnieniu od aplikacji oraz bibliotek, przepływ sterowania jest narzucany przez framework, a nie przez użytkownika. Domyślne zachowanie – framework posiada domyślną konfigurację, która musi być użyteczna i dawać sensowny wynik, zamiast być zbiorem pustych operacji do nadpisania przez programistę. Rozszerzalność – poszczególne komponenty frameworka powinny być rozszerzalne przez programistę, jeśli ten chce rozbudować je o niezbędną mu dodatkową funkcjonalność. Zamknięta struktura wewnętrzna – programista może rozbudowywać framework, ale nie poprzez modyfikację domyślnego kodu. PHP vs Frameworks
  4. MVC Model – jest pewną reprezentacją problemu bądź logiki aplikacji.

    Widok – opisuje, jak wyświetlić pewną część modelu w ramach interfejsu użytkownika. Może składać się z podwidoków odpowiedzialnych za mniejsze części interfejsu. Kontroler – przyjmuje dane wejściowe od użytkownika i reaguje na jego poczynania, zarządzając aktualizacje modelu oraz odświeżenie widoków. PHP vs Frameworks
  5. Jak wygląda Symfony? Bundle: HelloBundle/ HelloBundle.php Controller/ Resources/ meta/ LICENSE

    config/ doc/ index.rst translations/ views/ public/ Tests/ PHP vs Frameworks
  6. Bazy danych # app/config/parameters.yml parameters: database_driver: pdo_mysql database_host: localhost database_name:

    test_project database_user: root database_password: password php app/console doctrine:database:create PHP vs Frameworks
  7. Bazy danych php app/console doctrine:generate:entity #src/Hello/HelloBundle/Entity/Product.php class Product { /**

    @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string", length=100) */ protected $name; ... PHP vs Frameworks
  8. Bazy danych php app/console doctrine:generate:entities Hello php app/console doctrine:schema:update –force

    $product = new Product(); $product->setName('A Foo Bar'); $product->setPrice('19.99'); $product->setDescription('Lorem ipsum dolor'); $em = $this->getDoctrine()->getManager(); $em->persist($product); $em->flush(); PHP vs Frameworks
  9. Bazy danych Wyciaganie obiektu: $repository = $this->getDoctrine()->getRepository('HelloBundle:Product'); $product = $repository->find($id);

    $product = $repository->findOneById($id); $product = $repository->findOneByName('foo'); $products = $repository->findAll(); $products = $repository->findBy( array('name' => 'foo'), array('price' => 'ASC'); PHP vs Frameworks
  10. Bazy danych $query = $repository->createQueryBuilder('p') ->where('p.price > :price') ->setParameter('price', '19.99')

    ->orderBy('p.price', 'ASC') ->getQuery(); $em = $this->getDoctrine()->getManager(); $query = $em->createQuery( 'SELECT p FROM AcmeStoreBundle:Product p WHERE p.price > :price ORDER BY p.price ASC' )->setParameter('price', '19.99'); $products = $query->getResult(); $products = $query->getSingleResult(); $products = $query->getOneOrNullResult(); PHP vs Frameworks