Настройка Codeigniter 2, Doctrine 1.2 и Swift Mailer 4.0

Пояснение по поводу версий

Для связки используются версии: CI — 2.0.2, Doctrine — 1.2.3, Swift — 4.0.6. В общем-то все это добро запустится на php-5.2.x и выше, но так как Doctrine 2 требует php-5.3.x, что не всегда встретишь на shared hosting’е, да и не на каждом VDS, то будем использовать последнюю стабильную версию ветки 1.х.х.

Где взять

Все перечисленные компоненты можно скачать:

или выдернуть из систем контроля версий:

  • Codeigniter — hg clone ssh://hg@bitbucket.org/ellislab/codeigniter-reactor
  • Doctrine — git clone git://github.com/doctrine/doctrine1.git
  • Swift — git clone git://github.com/swiftmailer/swiftmailer.git

Codeigniter

mkdir /var/www/project
unzip CodeIgniter_2.0.2.zip -d /tmp
mv /tmp/CodeIgniter_2.0.2/* /var/www/project/

Swift

Установка

tar -xzf Swift-4.0.6.tar.gz -C /tmp
mkdir /var/www/project/application/libraries/Swift
mv /tmp/Swift-4.0.6/lib/* /var/www/project/application/libraries/Swift/

Создаем файл /var/www/project/application/libraries/Swift_libraries.php и пишем в него

< ?php if (!defined('BASEPATH')) exit('No direct script access allowed');

require 'Swift/swift_required.php';

class Swift_library
{
function __construct()
{

}
}

Doctrine

Установка

tar -xzf Doctrine-1.2.3.tgz -C /tmp
mv /tmp/Doctrine-1.2.3 /var/www/project/application/third_party/

Настройка

1. В файл /var/www/project/application/third_party/Doctrine.php пишем

< ?php
require_once 'Doctrine/Core.php';
class Doctrine extends Doctrine_Core
{
}

2. В файл /var/www/project/application/config/database.php пишем

<!--?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');<br ?--> $active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

// Setup Doctrine
$db['default']['dsn'] = $db['default']['dbdriver'] .
'://' . $db['default']['username'] .
':' . $db['default']['password'].
'@' . $db['default']['hostname'] .
'/' . $db['default']['database'];

require_once(realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'third_party/Doctrine.php');

spl_autoload_register(array('Doctrine', 'autoload'));
spl_autoload_register(array('Doctrine', 'modelsAutoload'));

Doctrine_Manager::connection($db['default']['dsn'], $db['default']['database']);
Doctrine_Manager::getInstance()-&gt;setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);
Doctrine_Core::loadModels(realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'models');

/* End of file database.php */
/* Location: ./application/config/database.php */

3. Создаем /var/www/project/application/doctrine.php и пишем в него

<!--?php <br ?--> require_once('config/database.php');

// Configure Doctrine Cli
// Normally these are arguments to the cli tasks but if they are set here the arguments will be auto-filled
$config = array('data_fixtures_path' =&gt; dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixtures',
'models_path' =&gt; dirname(__FILE__) . DIRECTORY_SEPARATOR . 'models',
'migrations_path' =&gt; dirname(__FILE__) . DIRECTORY_SEPARATOR . 'migrations',
'sql_path' =&gt; dirname(__FILE__) . DIRECTORY_SEPARATOR . 'sql',
'yaml_schema_path' =&gt; dirname(__FILE__) . DIRECTORY_SEPARATOR . 'schema');

$cli = new Doctrine_Cli($config);
$cli-&gt;run($_SERVER['argv']);

4. Создаем файл /var/www/project/application/doctrine и пишем в него

#!/usr/bin/env php
<!--?php <br ?--> define('BASEPATH','.');
chdir(dirname(__FILE__));
include('doctrine.php');

Последний штрих

chmod 0755 /var/www/project/application/doctrine
chmod 0777 /var/www/project/application/{cache,log}
mkdir /var/www/project/application/{fixtures,migrations,schema,sql}

Проверяем

cd /var/www/project/application
./doctrine

Если видим следующее:

То с Doctrine все ок.

Проверяем

Ну и на последок, накалякаем простую проверку работоспособности. Видоизменяем /var/www/project/application/controllers/welcome.php, Предварительно создав в указанной в конфиге базе, таблицу. В нашем случае это таблица «city», с полями id и name:

&lt; ?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
function index() {
//$this-&gt;load-&gt;view('welcome');
$this-&gt;load-&gt;library('swift_library');
$message = Swift_Message::newInstance();
$message-&gt;setFrom(array('test@gmail.com'));
$message-&gt;setTo(array('you@gmail.com'));
$message-&gt;setSubject('subject');
$message-&gt;setBody('message');

$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$mailer-&gt;send($message);

$city = Doctrine_Core::getTable('City')-&gt;findAll();
foreach($city as $c) {
echo $c-&gt;name."&lt;br /&gt;";
}
}
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
Настройка Codeigniter 2, Doctrine 1.2 и Swift Mailer 4.0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *