Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu php Kanał ATOM (tag: php)

Autor wpisu: batman, dodany: 21.11.2011 20:46, tagi: php

Dzisiejszy wpis będzie niecodzienny, ponieważ nie jest to news ze świata IT, konkurs ani stricte techniczny tekst. Dzisiaj poszukiwany, poszukiwana jest specjalista od Magento. Jeśli wiesz co to jest, potrafisz się w tym odnaleźć oraz posiadasz odpowiednio dużo wolnego czasu, wyślij maila na adres ksoklabs [at] gmail [dot] com. W treści maila prześlij przykłady swoich wdrożeń (linki do stron) oraz stawkę godzinową.

Ponieważ to nie ja poszukuję, nie jestem w stanie podać więcej szczegółów. Uzyskacie je pod wskazanym adresem.

Autor wpisu: bastard13, dodany: 21.11.2011 12:17, tagi: php, oop

po długiej przerwie

Trochę to potrwało zanim znalazłem chwilę czasu, żeby coś napisać, ale mam nadzieję, że warto było czekać:) Postaram się, żeby kolejne wpisy z tej serii pojawiały się częściej, a że w najbliższym czasie nie planuję już żadnych długoterminowych prac, myślę, że jest to założenie, które uda mi się zrealizować.Dobra, bez dłuższego przynudzania, zaczynam. Dzisiaj kilka słów o metodach, czyli:Czytaj więcej »

Autor wpisu: widmogrod, dodany: 20.11.2011 21:05, tagi: php, technologie

Okładka magazynu Imagine z moim artykułem Zend Framework 2 na Horyzoncie

Pod powyższym tytułem został opublikowany artykuł w najnowszym magazynie Imagine. Magazyn jest wydawany przez Empathy i można się z nim zapoznać całkowicie za darmo online: http://issuu.com/imaginemagazine/docs/imagine_no2

Artykuł powstał dwa miesiące temu, ale z dzisiejszego punktu widzenia mogę powiedzieć że kierunek rozwoju Zend Framework 2 trzyma się planu. Zagłębiając się bardziej w jego temacie napisałem pierwszą aplikację na FB właśnie przy użyciu ZD2 i Doctrine2. Mogę powiedzieć że z punktu widzenia programisty jest dużo nowych rzeczy do nauki. ZF2 zmienia sposób pisania aplikacji internetowych. Ale na ten temat na pewno jeszcze napiszę jeszcze kilka słów :)

Jako że w magazynie artykuł ukazał się w wersji skróconej, umieszczam go poniżej w pełnej wersji. Życzę smacznego!

Wstęp

Deweloperzy pracujący nad rozwojem framework’a postawili duży nacisk na to by produkt, który tworzą, był bardziej spójny, dobrze udokumentowany, zwiększający produktywność i szybkość uruchamiania aplikacji. Artykuł opisuje dlaczego i w jaki sposób developerzy chcą zrealizować postawione przez siebie cele. Do pełnego zrozumienia będzie potrzebna podstawowa znajomość pierwszej wersji Zend Framework, wzorców projektowych i PHP 5.3.

Prosty i szybki proces nauki

Pierwszy krok jest najtrudniejszy, to stwierdzenie, dokładnie oddaje najczęściej napotykany problem, przez rozpoczynających przygodę z pierwszą wersją framework’a, programistów. Pomimo dobrej dokumentacji i dopracowania rozdziału „Quick Start”, programista napotyka na dodatkowe problemy związane z rozwojem aplikacji:

  • Spójność. Dokumentacja opisuje jak korzystać z poszczególnych komponentów takich jak Zend_Cache, Zend_Translate, Zend_Form, itd. ale brakuje kompletnego przykładu, pokazującego jak połączyć istniejące komponenty, w bardziej złożonej i dynamicznie rozszerzanej o nowe funkcjonalności aplikacji.

  • Niekonsekwencja API. Pierwsza wersja framework’a zawiera hepler’y, plugin’y i filtry, niektóre z nich posiadają spójny interfejs a pozostałe już nie. Cześć z nich posiada niejawne metody tworzone poprzez __call(), które trudniej jest znaleźć w kodzie. Część z komponentów pozwala na konfigurację poprzez przekazanie array lub obiektu Zend_Config natomiast pozostałe wyłącznie array. Niektóre komponenty pozwalają na konfigurację camelCaseOption natomiast inne na underscore_separated.

Rozwiązanie, które deweloperzy zaproponowali jako remedium na powyższe problemy można przedstawić w kilku zwięzłych punktach:

Autor wpisu: Tomasz Kowalczyk, dodany: 20.11.2011 19:22, tagi: javascript, php

Już za niecałe dwa tygodnie na polskiej scenie programistycznej pojawi się kolejne interesujące wydarzenie - spotkanie CodeRetreat, edycja 2011. Ze względu na to, że zamierzam się tam pojawić, zapraszam Was do lektury tego krótkiego wpisu wprowadzającego. Mam nadzieję, że uda mi się Was zachęcić do udziału w nim. :)     Fotografia: coderetreat-warsaw.heroku.com. CodeRetreat 2011: [...]

Autor wpisu: Kamil Adryjanek, dodany: 13.11.2011 02:04, tagi: symfony2, php

In one of my templates i needed a simple way to get controller / action name to generate some dynamic urls. Symfony2 does not offer any Twig helper function to display current controller / action name.

The easiest way that i have found so far is to create Twig extension. In our default bundle we need to create folder Twig/Extension for example Acme/PageBundle/Twig/Extension and place there our Twig extension class:


<?php 
// src/Acme/PageBundle/Twig/Extension/AcmePageExtension.php

namespace Acme\PageBundle\Twig\Extension;

use Symfony\Component\HttpFoundation\Request;


class AcmePageExtension extends \Twig_Extension
{
	protected $request;
	/**
	 *
	 * @var \Twig_Environment
	 */
	protected $environment;
	
	public function __construct(Request $request)
	{
		$this->request = $request;
	}
	
	public function initRuntime(\Twig_Environment $environment)
	{
		$this->environment = $environment;
	}
	
	public function getFunctions()
	{
		return array(
	            'get_controller_name' => new \Twig_Function_Method($this, 'getControllerName'),
	            'get_action_name' => new \Twig_Function_Method($this, 'getActionName'),
		);
	}
	
	/**
	 * Get current controller name
	 */
	public function getControllerName()
	{
		$pattern = "#Controller\\\([a-zA-Z]*)Controller#";
		$matches = array();
		preg_match($pattern, $this->request->get('_controller'), $matches);
		
		return strtolower($matches[1]);
	}
	
	/**
	 * Get current action name 
	 */
	public function getActionName()
	{
		$pattern = "#::([a-zA-Z]*)Action#";
		$matches = array();
		preg_match($pattern, $this->request->get('_controller'), $matches);
	
		return $matches[1];
	}
	
	public function getName()
	{
		return 'acme_page';
	}
}

Next step is to register this service:

// src/Acme/PageBundle/Resources/config/services.yml
    request:
        class:        Symfony\Component\HttpFoundation\Reques
        
    acme.twig.extension:
        class: Acme\PageBundle\Twig\Extension\AcmePageExtension
        arguments:  [@request]
        tags:
            - { name: 'twig.extension' }

and then in twig templates we can simply call:


Controller name: {{ get_controller_name() }}
Action name: {{ get_action_name() }}

Autor wpisu: batman, dodany: 09.11.2011 08:00, tagi: php

W każdym zawodzie niezwykle ważnym elementem wykonywanej pracy jest warsztat. Warsztat w rozumieniu narzędzi oraz metodyki. Naturalnym jest, iż nie ma uniwersalnego rozwiązania, zadowalającego wszystkich programistów. Każdy z nas ma inne przyzwyczajenia, doświadczenie a nawet tok myślowy prowadzący do rozwiązania problemu. Niemniej kilka powtarzających się obszarów można wyodrębnić i stworzyć z nich warsztat programisty PHP. Powinien on składać się z:

  • IDE – współczesne IDE posiadają szereg narzędzi przyspieszających prace nad projektem. Te niewielkie oszczędności czasu w perspektywie całego dnia potrafią znacząco zwiększyć wydajność programisty. Wystarczy wspomnieć o generowaniu szablonów klas, automatycznym deploy’u na serwer, wbudowanej konsoli, wbudowanych narzędziach systemów kontroli wersji, integracji z systemem zadaniowym czy podpowiadaniu składni.
  • testy – każdy duży projekt potrzebuje testów. Wiem, zajmują dużo czasu, wymagają samodyscypliny i są nudne. Jednak bez nich późniejsze utrzymanie projektu to koszmar, a każda zmiana w kodzie może spowodować nieprzewidziane konsekwencje.
  • debuger – debugowanie aplikacji jest integralną częścią życia zawodowego programisty. Od sposobu debugowania uzależniony jest czas potrzebny na wykrycie “wąskich gardeł” oraz sprawdzenie przepływu aplikacji. Debugować można na dwa sposoby – var_dump (bardzo popularny i dający mierne efekty) lub Xdebug (albo coś podobnego) dostarczający pełni informacji o badanym projekcie. Co więcej, debuger pozwala wykonywać kod wiersz po wierszu i na każdym kroku sprawdzić aktualny stan aplikacji.
  • framework – nie ma projektu, który nie rósłby z czasem. Im większy projekt, tym więcej jest potrzebnych ludzi do jego utrzymywania. Jeśli od początku będzie stosowany popularny framework, czas wdrożenia nowej osoby znacząco się skróci. Ponadto korzystanie z frameworka wymusza stosowanie przyjętych zasad programowania co z kolei przekłada się na wyższą jakość kodu.
  • system kontroli wersji – czasy, w których programista przechowywał na dysku “historię” projektu, minęły bezpowrotnie. Wersjonowanie pozwala w błyskawiczny sposób przywrócić projekt do dowolnego stanu oraz prześledzić wprowadzane zmiany. Niezaprzeczalną zaletą systemu kontroli wersji jest możliwość podzielenia dużego projektu na podprojekty i utrzymywanie ich jako osobne repozytoria.
  • system zadaniowy – miejsce do spisywania zadań do wykonania. Jeśli nad projektem pracuje więcej osób, jest to doskonały sposób na śledzenie zmian w projekcie oraz informowanie innych członków zespołu o postępie prac.
  • wiki – często zapomniany element układanki, mimo iż tak samo ważny jak poprzednie. Centralne miejsce do dokumentowania projektu, będące jednocześnie obowiązkową lekturą nowoprzybyłych członków zespołu.

Do powyższych punktów należy dodać jeszcze jeden, należący do tzw. umiejętności miękkich – brak klapek na oczach lub bardziej profesjonalnie – otwarty umysł. Świat się nie kończy na PHP i jeśli można zrobić coś szybciej/lepiej/taniej w innej technologii, to nie ma powodu, aby tego nie zrobić.

Autor wpisu: Kamil, dodany: 09.11.2011 05:50, tagi: php

Klienci nie znają litości – często proszą o drobne zmiany, których wprowadzenie może nie być tak „drobną” sprawą. „Proszę dane generować do XLSX zamiast do CSV”, „proszę o możliwość eksportu do DOC zamiast RTF” i temu podobne prośby – choć docelowe pliki niewiele się różnią to sama budowa plików różni się znacząco. Główna różnica to [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.