Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , reacties: 11, views: 2.515 •
Bron: Yii PHP Framework, submitter: BBrunekreeft

Yii PHP Framework logo (75 pix)Yii is een component based php-framework, met volgens de ontwikkelaars zeer goede prestaties die het bijzonder geschikt zou maken voor het ontwikkelen van grootschalige webapplicaties. Het framework bevat tal van opties, zoals mvc, dao/ActiveRecord, I18N/L10N, caching, jQuery-based AJAX support, scaffolding, input validation, widgets, events en theming. Voor meer informatie verwijzen we naar deze pagina. De ontwikkelaars hebben versie 1.1.13 uitgebrachten hierin zijn de volgende veranderingen en verbeteringen aangebracht:

Bugs fixed:
  • #93: Criteria modification in CActiveRecord::beforeFind() did not apply when record was loaded in relational context. See UPGRADE instructions for details on behavior change. (cebe)
  • #109: formatNumber() now uses number_format() instead of round(), because of round() error in IEEE754 accuracy limitations (SonkoDmitry)
  • #110: MSSQL: fixed empty $primaryKey value after saving CActiveRecord model (resurtm)
  • #112: MSSQL: database abstraction layer now uses native transaction support of the SQLSRV driver (resurtm)
  • #124: Added CMysqlCommandBuilder to handle JOIN directive on update commands correctly (cebe, DaSourcerer)
  • #126: Fixed CWebUser::getReturnUrl(), allowing to determine default URL correctly, if CUrlManager::showScriptName is set to false (klimov-paul)
  • #138: CMysqlSchema fixed to support MySQL ANSI mode (cebe)
  • #140: Fixed validation CJuiButton with type buttonset (adminnu)
  • #162: Eventhandler attached twice when behavior is set enabled after attaching it (cebe)
  • #218: Fixed problem when using 'union' and 'order/limit/offset' in CDbCommand::buildQuery (nsanden)
  • #276: Tweaked CGridView stylesheet to include a hover style for the selected row (acorncom)
  • #810: Gii now adds a number to the end of relation name if same named relation already exists instead of not generating relation (n30kill, samdark)
  • #835: CApplication::onEndRequest is now called at the script shutdown to make sure log is written on forceful script termination (samdark, cebe)
  • #837: Fixed method CDbCriteria::__wakeup(), allowing to keep custom names for params and update all string parts for automatic params (klimov-paul)
  • #959: Bug where non-lowercase keys cannot be found in CConsoleApplication::$commandMap fixed (resurtm)
  • #962: Fixed handling of negative timestamps in CDateFormatter::format() (johnmendonca)
  • #1094: CListView with enabled history used to clear page title in case sorting or paging performed (Opera and Firefox only) (mdomba, resurtm)
  • #1095: Added missing retry_interval parameter of addServer function call in CMemCache (Lisio)
  • #1181: Fixed can read but not save binary data e.g. BYTEA on PostgreSQL (karmakaze)
  • #1212: Added missing .gitignore files to the application generated by WebAppCommand (resurtm)
  • #1249: CHttpRequest::sendFile() outputs malformed file content in some specific circumstances (andyhu)
  • #1279: CHttpRequest::sendFile() now always sends valid content-header (Ragazzo)
  • #1330: SQLite column default value was incorrect for column of type string and DEFAULT NULL (cebe)
  • #1344: Fixed URL problem in CGridView and CListView when enableHistory was true and unicode chars where used (mdomba, Redjik)
  • #1347: CDbTestCase: table name in fixtures list enclosed into double curly brackets (e.g. 'tasks'=>':{{task}}') didn't worked properly (resurtm)
  • #1351: CClientScript::registerMetaTag() now allows to register multiple meta tags with the same set of attributes (klimov-paul)
  • #1364: Empty CHtml::$errorCss cause class attribute rendering errors (creocoder)
  • #1381: Ignore select given by criteria or scope on stat relation (cebe)
  • #1392: HostInfo was appended to CHttpRequest::redirect() location in case of using protocol relative URLs (dInGd0nG, samdark)
  • #1406: Fixed the issue that false value returned from CDbCommand could not be cached properly (mdomba)
  • #1407: CDbCommandBuilder::createCountCommand() used to bind parameters for unused ORDER clause and unused SELECT part (resurtm)
  • #1444: Fixed CGoogleApi::register call to registerScriptFile (mdomba)
  • #1478: Fixed CWsdlGenerator error when using namespaced classes (Diego-Rocha)
  • #1485: CSort does not quote table alias when using CDbCriteria (undsoft)
  • #1492: Fixed jQuery calls when noConflict feature was used and jQuery code was returned by ajax calls (l-nagash)
  • #1499: Fixed CVarDumper highlighting "\" (antoncpu)
  • #1549: Fixed CFormatter::sizeFormat() to use translations from 'yii' category and corrected english default translation, also improved number formatting (cebe)
  • #1552: Fixed potential vulnerability in CJavaScript::encode(): $safe parameter didn't used to be passed to the recursive method calls (resurtm)
  • #1575: MessageCommand::extractMessages fails to ignore invalid category definitions (softark)
  • #1584: Fixed CGridView and CListView urls when enableHistory was used with "path" urlFormat (mdomba)
  • #1621: Fixed CCompareValidator to support {compareAttribute} in $message also on client-side (cebe)
  • #1622: CLocale::getTerritory() used to return invalid territory name when locales (language tags) were specified without territory part (e.g. 'de', 'fr') (resurtm)
  • #1624: Requirements page now tries all other preferred languages when the most preferred one is missing (ArtVal)
  • #1625: CEmailLogRoute does not properly encode UTF8 characters contained in logs, CEmailLogRoute::$utf8 property added (mdomba, resurtm)
  • #1628: Active HTTP sessions overwrote the Cache-Control header set by CHttpCacheFilter (DaSourcerer)
  • #1646: CLocale::getTerritory() used to return invalid territory name when locales (language tags) were specified with script part (e.g. 'zh-Hans-CN', 'zh-Hant-HK') (resurtm)
  • #1652: Fixed incorrect syntax of CDbSchema::renameTable() for SQLite, added CSqliteSchema::renameTable() method (Sarke)
  • #1673: CHttpRequest::getPreferredLanguage now works according to RFC2616. Added CHttpRequest::getPreferredLanguages that returns all user accepted languages in order of preference (Rupert-RR, bwoester, cebe, samdark)
  • #1676: Fixed listData() grouping when no group was specified (mdomba)
  • #1716: Fixed CCodeModel::pluralize() and CConsoleCommand::pluralize() so it doesn't force lowercase the first letter in any words (nsanden)
  • #1726: Fixed the error Undefined variable: json in CJSON.php when json_decode function did not exist (heyhoo)
  • #1792: Fixed persistent access permissions when two identities were used in a single application run. (jhenriquemc, François Gannaz)
  • #1853: CAssetManager::publish() method will throw an exception if $forceCopy and $linkAssets are both true (resurtm, mdomba)
  • Table schema is refreshed on Gii model generation when schemaCachingDuration is used (SonkoDmitry)
  • CDbCommand::setFetchMode wasn't accepting additional arguments needed for PDO::FETCH_CLASS (samdark)
  • CCaptchaAction::validate check wasn't working properly in some cases (samdark, Qiang)
Enhancements:
  • #84: Log route categories are now accepted in form of array. Added CLogRoute::except and parameter to CLogRoute::getLogs that allows you to exclude specific categories (paystey)
  • #104: Added CWebLogRoute::$collapsedInFireBug property to control whether the log should be collapsed by default in Firebug (marcovtwout)
  • #117: Added CPhpMessageSource::$extensionPaths to allow extensions, that do not have a base class to use as category prefix, to register message source (rcoelho, cebe)
  • #144: baseID in CHtml::checkBoxList and CHtml::radioButtonList can now be customized via htmlOptions (cebe)
  • #217: Added CTypeValidator::validateValue() and CTypeValidator::$strict, better check for arrays (samdark)
  • #259: CHttpRequest::getRestParams is now public (samdark)
  • #291: CFormatter::formatDate and formatDateTime now also accept strings in strtotime() format (francis_tm, cebe)
  • #486: CHttpSession::$gCProbability and CDbHttpSession::$gCProbability are floats now. Minimal possible $gCProbability value has been changed to the ˜0.00000005% (1/2147483647), was integer 1% before, default value left unchanged (1%) (resurtm)
  • #545: Add CDataProviderIterator to allow iteration over large data sets (phpnode)
  • #556: CDbColumnSchema::$comment property has been added. It stores comment for the table column, comment retrieving is working for MySQL, PgSQL and Oracle (resurtm)
  • #724: Third argument of CHtml::listData() now receives anonymous function as calculator of the text field value, PHP 5.3+ only (resurtm)
  • #846: Added addPrimaryKey() / dropPrimaryKey() commands to CDbMigration (ridget)
  • #949: Added COciSchema::resetSequence (jazahn, samdark)
  • #990: Added CArrayDataProvider::$caseSensitiveSort property which allows to control whether sorting should be case sensitive (resurtm)
  • #999: Changed md5() to crypt() in docs/guide/topics.auth, docs/blog and demos/blog. Added Wiki 425 tutorial on use of crypt() (tom--)
  • #1084: CDateTimeParser: MMM pattern for parsing short month names is now locale aware (resurtm)
  • #1146: CFileHelper::copyDirectory recursive directory creation (senz)
  • #1183: CDbCommand: added andWhere()/orWhere() which appends condition to the WHERE part of the query, in contrary of CDbCommand::where() which replaces it (resurtm)
  • #1184: CEmailValidator now supports IDN (Internationalized Domain Names), added CEmailValidator::$validateIDN property (resurtm)
  • #1134: CAssetManager filepath creation now can be extended thru generatePath(). Path creation is now recursive in publish(). (senz)
  • #1201: CMenu now supports HTML attributes for the links' wrap element specified in $linkLabelWrapper (resurtm)
  • #1228: Added ability to MessageCommand to generate translation files for multiple functions (Arne-S, samdark)
  • #1238: CJuiDatePicker is now using the native altField option to handle the hidden input when type flat is used (mdomba, christiansalazar)
  • #1282: CDateTimeParser: added MMMM pattern for parsing standard month names such as 'January', 'Décembre' or 'März' (resurtm)
  • #1286: CUrlValidator now supports IDN (Internationalized Domain Names), added CUrlValidator::$validateIDN property (resurtm)
  • #1289: Added support for column comments for MSSQL (CDbColumnSchema::$comment property) (resurtm)
  • #1299: Added CSRF token validation for PUT and DELETE (miraage, samdark)
  • #1369: Added CCheckBoxColumn::disabled that accepts PHP expression or anonymous function determining if checkbox for the row should be disabled (sucotronic)
  • #1386: Second parameter of the CHtml::value() is now able to accept anonymous function which calculates value to be used (Qiang, resurtm)
  • #1396: Added 'text/csv' mime-type for the 'csv' file extension in utils/mimeTypes.php (effectively used by e.g. CHttpRequest::sendFile()) (rawtaz)
  • #1426: Behaviors are now affecting memory consumption significantly less (slavcodev, creocoder, Qiang, samdark)
  • #1443: Added CHttpRequest::getRawBody() that allows reading RAW HTTP request body multiple times (itamar82, resurtm, samdark)
  • #1464: CCaptchaAction now supports rendering through ImageMagick, CCaptcha::checkRequirements() changed (resurtm, SonkoDmitry)
  • #1500: CSqlDataProvider now supports CDbCommand in constructor (slavcodev)
  • #1507: Added support for minOccurs, maxOccurs, nillable to CWsdlGenerator. Changed most of the methods visibility to protected. Added unit tests (lubosdz)
  • #1518: Allow to configure CHtml::$closeSingleTags and CHtml::$renderSpecialAttributesValue. Useful for HTML5 code (creocoder)
  • #1527: Added $id argument to CClientScript::registerMetaTag that allows you to override existing tags (Alex-Code)
  • #1531: CArrayDataProvider is now able to sort cutted array, where sorting column is not available in every entry (Yiivgeny)
  • #1535: HTML5 special attributes added to CHtml::renderAttributes() (creocoder)
  • #1538: Added CListView::ajaxUpdateError for the possibility to use a custom ajax error handler (mdomba)
  • #1567: Added filterSelector property to CGridView (MonkeyMaster)
  • #1581: Added 'unselectValue' to CHtml::dropDownList() and CHtml::activeDropDownList() to define default post value if no option is selected in multiple mode (creocoder, mdomba)
  • #1596: Added CGridView::rowHtmlOptionsExpression to allow set HTML attributes for the row (Ryadnov)
  • #1657: CDbCommandBuilder::createUpdateCounterCommand now can be used with float values (samdark, hyzhakus)
  • #1658: CFormatter::formatHtml() is now more flexible and customizable through new CFormatter::$htmlPurifierOptions property (resurtm)
  • Fixed the check for ajaxUpdate false value in jquery.yiilistview.js as that never happens (mdomba)
  • Requirements checker: added check for Oracle database (pdo_oci extension) and MSSQL (pdo_dblib, pdo_sqlsrv and pdo_mssql extensions) (resurtm)
  • Added CChainedLogFilter class to allow adding multiple filters to a logroute (cebe)
  • Allow CDataProvider to use custom pagination and sorter (creocoder)
  • Value of the CHtml::activeTextArea() can now be set through $htmlOptions['value'] (resurtm)
  • Allow to customize CHtml::error() container tag (creocoder)
  • CModule::setComponents() now can reconfigure already loaded components (creocoder)
  • CLocale::getWeekDayName() weekday-number argument is now more compatible with date() function, allowing 0 and 7 for sunday (Yiivgeny, cebe)
  • Added minified jQuery BBQ (samdark)
Changes:
  • #1193: Upgraded jQuery to 1.8.3 (samdark)
  • #1373: Upgraded jquery star rating to 3.14 (samdark)
  • #1548: Upgraded jQueryUI to 1.9.2 (samdark)
  • #1563: Updated CTestCase for PHPUnit 3.7.7+ (tanakahisateru, samdark)
  • #1746: CDbCriteria::mergeWith() is now more consistent with all other class methods (hyzhakus, samdark)
  • MSSQL unit tests updated and actualized, added SQLSRV driver support (resurtm)
  • Added Oracle unit tests (resurtm)
  • Updated CHttpCacheFilter to use dates as specified by RFC 1123 (bramp)
  • Added punycode.js v1.1.1 (http://mths.be/punycode) and IDNA Converter v0.8.0 (http://phlymail.com/en/downloads/idna-convert.html) to the vendors (third party libraries and utilities) (resurtm)
New:
  • Ported offline documentation viewer from yiidoc project. Mainly usable for translations but can be used for reading offline as well (samdark)

Yii PHP Framework screenshot (481 pix)

Reacties (11)

Ik ben nu bezig met een project met YII. Het is 1 van de beste frameworks die ik ben tegen gekomen. hij kan al veel dingen automatisch genereren en met de goede debug functies makkelijk fouten op te lossen.
Ik zou eens kijken naar AgileToolKit, een relatief jong framework maar wel snel groeiend, ook geeft de ontwikkelaar google hangout lessen wat leuk is ;)
http://agiletoolkit.org

[Reactie gewijzigd door Icekiller2k6 op 1 januari 2013 19:38]

Van http://agiletoolkit.org/learn/intro
Every file included in the distribution is a result of 10-year refinement and re-use across thousands of web projects: big and small.
Jong?

Leuk gebruik van een bekende term in de naam trouwens. Alleen heeft het niet zoveel met het Agile ontwikkelmethode te maken. ;)
't is niet omdat het _goede_ code basis gebruikt dat de framework zelf "jong" is ;)
Waar ik op doelde is dat je zei dat het een jong framework is, terwijl het framework volgens zijn ontwikkelaar 10 jaar oud is. In mijn optiek is dat moeilijk met 'jong' te bestempelen, want in 10 jaar kan een stukje software gerust een aantal keren naar volwassenheid herschreven zijn. :)
Ik blijf me altijd afvragen wat het voordeel van deze frameworks zijn. Er zijn zoveel op dit moment: Yii, Zone, Cake, CodeIgnite, etc.

Zelf gebruik geen framework voor mijn prive projecten, omdat ik vind dat PHP de laatste per jaren steeds meer goede classes, functies, etc. zelf aan boord heeft. (gettext, locale, PDO, autoload - om maar een aantal classes and functies bij elkaar te noemen.) Met PHP6 wordt dit tevens beter omdat er veel onnodige functies (eindelijk) eruit worden gesloopt.
Daar moet ik je wel gelijk in geven. MAAR de voorwaarde is wel dat die nieuwigheden door de PHP Group duidelijk worden gedocumenteerd en met begrijpelijke en praktische tutorials overtuigend worden neergezet.
Losse classes en functies maken nog geen framework zoals bijvoorbeeld CakePHP dat is, zo worden er in de standaard PHP functielibrary geen conventies en design patterns gebruikt m.b.t. de architectuur van je applicatie om je werk uit handen te nemen, hoe minder regels code je zelf schrijft, hoe beter.

Ik vind het wel jammer dat het PHP landschap zo versplinterd is, er lijkt elke maand wel een nieuw framework bij te komen. Ik denk dat als ik nu een nieuwe webapp zou maken, ik gewoon Rails ga gebruiken, gewoon omdat de gebruikte taal imo beter is.

[Reactie gewijzigd door Sfynx op 1 januari 2013 23:01]

Yii is een geweldig framework, maar de laatste tijd gebruik ik eigenlijk veel meer Laravel voor mijn persoonlijke projecten. Het is echt een geweldig framework (ook nog vrij jong) maar heeft enorm veel features die inituitief en makkelijk werken.

http://www.laravel.com

Op dit item kan niet meer gereageerd worden.