Firebug i Zend Framework

gru 28th, 2011

Logger

bootstrap.php

1
2
3
4
5
6
7
protected function _initLogger() {

$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);
Zend_Registry::set('logger', $logger);

}

użycie

1
Zend_Registry::get('logger')->log($array, Zend_Log::INFO);

 

Database profiler

application.ini

1
2
resources.db.params.profiler.enabled = true
resources.db.params.profiler.class = Zend_Db_Profiler_Firebug

 

Linki:
http://www.firephp.org/Wiki/Libraries/ZendFramework
http://www.karolnowicki.pl/zend-framework/artykul/pokaz/prosty-profiler-bazy-danych-z-zend-i-firebug/
http://www.altcontroldelete.pl/artykuly/firebug-opis-mozliwosci-wtyczki-dla-przegladarki-mozilla-firefox/

 

 

 

Default fetchMode ZF

maj 5th, 2011

Próbowałem zmienić domyślny format zwracania danych z bazy danych z tablicy na obiekty. Można zrobić to na kilka sposobów (o czym można poczytać w sieci) jednak zależało mi aby zrobić to w pliku konfiguracyjnym. Ciężko znaleźć informacje jak to zrobić – natomiast jest gdzieś ogólny przepis (link).

1
resources.db.params.options.fetchMode = 5

wartość 5 odpowiada stałej Zend_Db::FETCH_OBJ lub PDO::FETCH_OBJ

Co dziwne ustawienie w/w parametru nie zadziała w objektach modelu dziedzicącego po Zend_Db_Table_Abstract; działa natomiast w obiektach wywołujących klasę Zend_Db_Table_Abstract() z ustawieniem domyślnych parametrów

1
Zend_Db_Table_Abstract::getDefaultAdapter();

Od razu ostrzegam, że nie ma sensu szukać rozwiązania tego problemu. Ktoś już się tym zainteresował (wysłał bug’a) – okazuje się że w klasie Zend_Db_Table_Abstract metoda odpowiedzialna za zwracanie wyników (_fetch()) ma na sztywno ustawiony typ zwracanych wyników na Zend_Db::FETCH_ASSOC.
„Błąd” ten nie zostanie poprawiony ponieważ spowoduje to błędne działanie innych elementów (np. Zend_Db_Table_Row).

Tags: ,

ZendFramework placeholders

maj 4th, 2011

tworzę plik _sidebar.phtml

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$this->placeholder('_right_sidebar')->captureStart() ?>
<h4>Sidebar1</h4>
tresc 1
<?php
$this->placeholder('_right_sidebar')->captureEnd() ?>

<?php
$this->placeholder('_left_sidebar')->captureStart() ?>
<h4>Sidebar2</h4>
tresc 2
<?php
$this->placeholder('_left_sidebar')->captureEnd() ?>

Powyżej zostały utowrzone dwa placeholdery, których treść zawiera się miedzy metodami captureStart() a captureEnd()
Plik zapisałem w katalogu /views/scripts/sidebars/_sidebar.phtml. Katalog sidebars stworzyłem na potrzeby przechowywania elementów tego typu.

Następnie dodam plik zawierajacy placeholder do klasy widoku

1
$this->view->render('sidebars/_sidebar.phtml');

w kontrolerze (dowolnym), lub

1
$this->render('sidebars/_sidebar.phtml');

w pliku widoku (dokument .phtml)

Teraz należy umieścić placeholdery w odpowiednich miejscach na stronie. Do umieszczenia mam 2 helpery tego typu ‘_right_sidebar’ oraz ‘_left_sidebar’

1
2
3
4
5
6
7
8
9
10
11
12
html... header...  body ....
<div id="left">
<?php $this->placeholder('_left_sidebar')  ?>
</div&>
<div id="center">
<?php  echo $this->layout()->content ?>
</div>
<div id="right">
<?php $this->placeholder('_right_sidebar') ?>
</div>

.../body .../html
Tags:

Przykład użycia PDO

mar 29th, 2011
1
2
3
4
5
6
7
8
$w_params = array(':uz_id' =&gt;  $uz_id);
$query = <<<__SQL
   SELECT * FROM ....
__SQL;

$stmt = $this->dbh->prepare( $query );
$stmt->execute( $w_params );
$result = $stmt->fetchAll(  PDO::FETCH_ASSOC );
Tags:

przykład użycia thrift

mar 29th, 2011

http://incubator.apache.org/thrift/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
if(  !$this->um->isLoggedIn() ) {
$this->errors['general'] = 'Nie jesteś  zalogowany.';
return FALSE;
}

$uz_id =  $this->um->getId();
session_write_close();
error_reporting(  0 );
try {
$socket = new TSocket('linaa2.hopto.org',  9090);
$transport = new TBufferedTransport($socket, 1024, 1024);
$protocol  = new TBinaryProtocol($transport);
$client = new  BVChatClient($protocol);

$transport->open();

$cw_id = isset(  $request['cw_id'] ) ? $request['cw_id'] : 0;

$result =  array();

$lastEventId = $client->getLastEventId( $uz_id );

do  {
$date_1 = new DateTime();
$event = $client->getNextEvent( $uz_id,  $cw_id );

if( $event !== NULL ) {
$cw_id =  $event->eventId;

if( $event->eventType == BVChatEventType::MESSAGE  ) {
$message = $client->getMessage( $uz_id, $cw_id );
$date = new  DateTime( '@' . floor( $message->timestamp / 1000 ) );

$date_2 = new  DateTime();
$result[] = array(
'cw_id' =>; $cw_id,
'cw_od_uz_id'  => $message->from,
'cw_do_uz_id' => $message->to,
'cw_data'  => $date->format('Y-m-d H:i:s'),
'cw_data_1' =>  $date_1->format('Y-m-d H:i:s'),
'cw_data_2' =>  $date_2->format('Y-m-d H:i:s'),
'cw_tresc' =>  $message->message,
'duz_nazwa_od' =>  $message->from,
'duz_nazwa_do' =>  $message->to
);
}

}

} while( $event !== NULL &&  $event->eventType != BVChatEventType::NOTHING && $cw_id <  $lastEventId );

$transport->close();

} catch (TException $tx)  {

if( $transport !== NULL && $transport->isOpen() )  {
$transport->close();
}

if( count( $result ) == 0)  {
$this->errors['general'] = $tx->getMessage();
return  FALSE;
}

}
error_reporting( E_ALL );

$this->results =  $result;

return $this->results;
Tags:

ATREUS

gru 31st, 2010

System zdalnej kontroli zleceń ATREUS  jest moim pierwszym na wpół poważnym projektem programistycznym. System powstał początkowo jako projekt zaliczeniowy na jeden z przedmiotów na studiach. Atreus powstał w oparciu o framework KohanaPHP. Na temat samego frameworka wypowiem sie w innym wątku.

System służy do kontroli zleceń – mianowicie wydruków wielkoformatowych, których swego czasu byłem sprzedawcą za pośrednictwem serwisu aukcyjnego Allegro.pl.

Atreus nie wymaga integracji z API serwsu Allegro. Wszelkie potrzebne dane wprowadzane są za pośrednicwem linku generowanego w automatycznej wiadomości po zakupie towaru. Do zadań kupującego należy tylko kliknąć w link.

Na dzień dzisiejszy nie przewiduje dalszego rozwoju Systemu, niemniej chcę wzorować na nim tutorial na temat programowania z wykorzystanie frameworka KohanaPHP, który mam nadzieję niedługo powstania na kartach niniejszej strony.

Tags:

Fabryka Wydruków

gru 31st, 2010

Prosta strona – wizytówka firmy (w której swoją drogą pracowałem). Nastawiłem się na prostotę i oryginalnosć. Strona w całości oparta o HTML i CSS oraz drobne skrypty PHP obługujące zawartość.

Grafikę strony ograniczona do niezbędnego  minimum w celu szybszego ładowania zawartości.

Generalnie nie było nawet okazji aby wykazać się jakoś szczególnie umiejętnościami programistycznymi.

Tak naprawdę strona powstała tylko dlatego, że już nie mogłem patrzeć na jej poprzednią wersję (którą też projektowałem) a jakby nie było strona jest nie tylko wizytówką firmy, którą prezentuje ale także jej projektanta

Tags: