Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
310d98cf
Commit
310d98cf
authored
Feb 01, 2010
by
beberlei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[2.0] DDC-296 - Implement and document Mysql Session Init 'postConnect' Subscriber
parent
cb7fbee1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
109 additions
and
0 deletions
+109
-0
MysqlSessionInit.php
lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php
+75
-0
AllTests.php
tests/Doctrine/Tests/DBAL/AllTests.php
+1
-0
MysqlSessionInitTest.php
tests/Doctrine/Tests/DBAL/Events/MysqlSessionInitTest.php
+33
-0
No files found.
lib/Doctrine/DBAL/Event/Listeners/MysqlSessionInit.php
0 → 100644
View file @
310d98cf
<?php
/*
* $Id$
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the LGPL. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Event\Listeners
;
use
Doctrine\DBAL\Event\ConnectionEventArgs
;
use
Doctrine\DBAL\Events
;
use
Doctrine\Common\EventSubscriber
;
/**
* MySQL Session Init Event Subscriber which allows to set the Client Encoding of the Connection
*
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link www.doctrine-project.com
* @since 1.0
* @version $Revision$
* @author Benjamin Eberlei <kontakt@beberlei.de>
*/
class
MysqlSessionInit
implements
EventSubscriber
{
/**
* @var string
*/
private
$_charset
;
/**
* @var string
*/
private
$_collation
;
/**
* Configure Charset and Collation options of MySQL Client for each Connection
*
* @param string $charset
* @param string $collation
*/
public
function
__construct
(
$charset
=
'utf8'
,
$collation
=
false
)
{
$this
->
_charset
=
$charset
;
$this
->
_collation
=
$collation
;
}
/**
* @param ConnectionEventArgs $args
* @return void
*/
public
function
postConnect
(
ConnectionEventArgs
$args
)
{
$collation
=
(
$this
->
_collation
)
?
" COLLATE '"
.
$this
->
_collation
:
"'"
;
$args
->
getConnection
()
->
executeUpdate
(
"SET NAMES '"
.
$this
->
_charset
.
"'"
.
$collation
);
}
public
function
getSubscribedEvents
()
{
return
array
(
Events
::
postConnect
);
}
}
\ No newline at end of file
tests/Doctrine/Tests/DBAL/AllTests.php
View file @
310d98cf
...
...
@@ -59,6 +59,7 @@ class AllTests
// Events and Listeners
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Events\OracleSessionInitTest'
);
$suite
->
addTestSuite
(
'Doctrine\Tests\DBAL\Events\MysqlSessionInitTest'
);
// All Functional DBAL tests
$suite
->
addTest
(
Functional\AllTests
::
suite
());
...
...
tests/Doctrine/Tests/DBAL/Events/MysqlSessionInitTest.php
0 → 100644
View file @
310d98cf
<?php
namespace
Doctrine\Tests\DBAL\Events
;
use
Doctrine\Tests\DbalTestCase
;
use
Doctrine\DBAL\Event\Listeners\MysqlSessionInit
;
use
Doctrine\DBAL\Event\ConnectionEventArgs
;
use
Doctrine\DBAL\Events
;
require_once
__DIR__
.
'/../../TestInit.php'
;
class
MysqlSessionInitTest
extends
DbalTestCase
{
public
function
testPostConnect
()
{
$connectionMock
=
$this
->
getMock
(
'Doctrine\DBAL\Connection'
,
array
(),
array
(),
''
,
false
);
$connectionMock
->
expects
(
$this
->
once
())
->
method
(
'executeUpdate'
)
->
with
(
$this
->
equalTo
(
"SET NAMES 'foo' COLLATE 'bar"
));
$eventArgs
=
new
ConnectionEventArgs
(
$connectionMock
);
$listener
=
new
MysqlSessionInit
(
'foo'
,
'bar'
);
$listener
->
postConnect
(
$eventArgs
);
}
public
function
testGetSubscribedEvents
()
{
$listener
=
new
MysqlSessionInit
();
$this
->
assertEquals
(
array
(
Events
::
postConnect
),
$listener
->
getSubscribedEvents
());
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment