CakeFest 2024: The Official CakePHP Conference

Collator sınıfı

(No version information available, might only be in Git)

Giriş

Yerele duyarlı sıralama desteğiyle dizge karşılaştırma yeteneği sağlar.

Sınıf Sözdizimi

class Collator {
/* Sabitler */
const int PRIMARY;
const int SECONDARY;
const int TERTIARY;
const int IDENTICAL;
const int OFF;
const int ON;
const int SHIFTED;
const int STRENGTH;
/* Yöntemler */
public __construct(string $yerel)
public asort(array &$dizi, int $sıralama_türü = Collator::SORT_REGULAR): bool
public compare(string $dizge1, string $dizge2): int|false
public static create(string $yerel): ?Collator
public getAttribute(int $öznitelik): int|false
public getLocale(int $tür): string|false
public getSortKey(string $string): string|false
public getStrength(): int
public setAttribute(int $öznitelik, int $değer): bool
public setStrength(int $seviye): bool
public sortWithSortKeys(array &$dizi): bool
public sort(array &$dizi, int $sıralama_seçeneği = Collator::SORT_REGULAR): bool
}

Öntanımlı Sabitler

Collator::FRENCH_COLLATION

Dizgenin geri planındaki farklı aksanlara göre dizgeleri sıralar. Bu öznitelik Fransızca yerellerde ve bir kaç başka yerelde otomatik olarak etkindir. Kullanıcılar normalde bu özniteliği açıkça etkinleştirme ihtiyacı duymazlar. Bu özniteliğe On değeri atamanın başarım açısından bir bedeli vardır fakat sıralama anahtarının uzunluğu tesirsizdir. Olası değerler şunlardır:

Örnek 1 - FRENCH_COLLATION kuralları

  • F=OFF cote < coté < côte < côté
  • F=ON cote < côte < coté < côté

Collator::ALTERNATE_HANDLING

Alternate özniteliği, UCA'da değişken karakterler denen karakterleri (boşluk karakterleri, noktalama imleri ve simgeler) denetim altında tutmak için kullanılır. Eğer bu özniteliğe NonIgnorable (N) değeri atanırsa bu karakterler arasındaki farklar harfler arasındaki farklarla aynı önemdedir. Eğer Shifted (S) atanırsa bu karakterler çok düşük önemde olurlar. Shifted değeri çoğunlukla Strength (etki seviyesi) ile birlikte Dördüncüllüğü (Quaternary) belirtmekte kullanılır. Böyle bir durumda, boşluk karakterleri, noktalama imleri ve simgelerin dizgeleri karşılaştırırken hesaba katılabilmesi için dizgelerin tüm diğer şeyler (temel harfler, aksanlar ve harf büyüklüğü) bakımından eşdeğer olmaları gerekir. Eğer özniteliğe Shifted atanmazsa üçüncül (Tertiary) ve dördüncül (Quaternary) etki seviyeleri arasında hiçbir fark yoktur. Daha fazla bilgi ve örnekler için » UCA sitesindeki "Variable_Weighting" konusuna bakınız. Özniteliğin değerlerinin basitçe On ve Off olmamasının sebebi gelecekte başka değerlerin eklenebilecek olmasıdır. UCA seçeneği Blanked üçüncül etki seviyesi ile ifade edilir ve özniteliğe Shifted atanır. Çoğu yerel için NonIgnorable öntanımlıdır. Eğer Shifted seçilirse ve noktalama dışında birbirinin aynı çok sayıda dizge varsa işlem daha yavaş olabilir; etki seviyesi ayrıca arttırılmadıkça sıralama anahtarı uzunluğu tesirsiz olacaktır.

Olası değerler:

Örnek 2 - ALTERNATE_HANDLING kuralları

  • S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA
  • S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA
  • S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA

Collator::CASE_FIRST (int)

Case_First özniteliği, dizgeler arasında başka farkların olmadığı durumda büyük harflerin küçük harflerden önce mi yoksa sonra mı olacağını belirler. Olası değerler, büyük harflerin önce geleceğini belirten Uppercase_First (U), küçük harflerin önce olacağını belirten Lowercase_First (L) değerlerine ilaveten standart Default ve Off değerleridir. Sonuçları bakımından Off ve Lowercase_First arasında hemen hemen hiç fark yoktur. Bu bakımdan kullanıcılar genelde Lowercase_First kullanmazlar, sadece Off veya Uppercase_First kullanırlar. X ve L arasındaki farkların ayrıntıları ile ilgilenen kullanıcılar Karşılaştırma Özelleştirmesini incelemelidirler. L veya U belirtmenin dizge karşılaştırma başarımında etkisi olmaz, fakat sıralama anahtarı uzunluğunu etkiler.

Olası değerler:

Örnek 3 - CASE_FIRST kuralları

  • C=X or C=L "china" < "China" < "denmark" < "Denmark"
  • C=U "China" < "china" < "Denmark" < "denmark"

Collator::CASE_LEVEL

Case_Level özniteliği harf büyüklüğünü değil aksanları yoksaymak için kullanılır. Böyle bir durumda, etki seviyesine (Strength) Primary ve Case_Level özniteliğine On atanır. Çoğu yerelde On öntanımlıdır ve bu değerin küçük bir dizge karşılaştırma başarımı ve sıralama anahtarı ektisi vardır.

Olası değerler:

Örnek 4 - CASE_LEVEL kuralları

  • S=1, E=X role = Role = rôle
  • S=1, E=O role = rôle < Role

Collator::NORMALIZATION_MODE

Normalleştirme ayarı, karşılaştırmada metnin tamamen normalleştirilip normalleştirilmeyeceğini belirler. Değeri off olsa bile (çoğu yerel için öntanımlıdır) ortak kullanımda gösterildiği haliyle metin doğru olarak karşılaştırılacaktır (Ayrıntılar için UTN #5'e bakınız). Sadece, meşru sırada olmayan aksan imleri sorun çıkarır. Özniteliğe On atanmışsa, olası tüm metin girdiler için en iyi sonuçlar garanti edilir ve normalleştirme gerektiren dizilimlerin sıklığına bağlı olarak orta seviyede bir dizge karşılaştırma başarımı maliyeti vardır. Sıralama anahtarı uzunluğu üzerinde önemli bir etkisi yoktur. Eğer girdi metninin NFD veya NFKD normalleştirme şekillerinden birinde olduğu biliniyorsa bu normalleştirme seçeneğini etkin kılmaya gerek yoktur.

Olası değerler:

Collator::STRENGTH

ICU Karşılaştırma hizmeti çok seviyeli karşılaştırmayı destekler (bunlara seviye (level) dendiği gibi tesir derecesi de (Strength) denir). Bu seviyeler sayesinde ICU, dizgeleri yerel uzlaşımlara bağlı olarak hassas bir şekilde sıralar. Bununla birlikte, metin içinde dizge araması, seviyelerin seçilerek devreye sokulmasına izin verilerek çeşitli eşleşme koşullarıyla gerçekleştirilebilir. Daha ayrıntılı bilgi edinmek için collator_set_strength() işlevine bakınız.

Olası değerler:

Collator::HIRAGANA_QUATERNARY_MODE

JIS x 4061 ile uyumluluk Hiragana ve Katakana karakterler arasında ayrım sağlayacak ek seviyeler gerektirir. Eğer standartla uyumluluk gerekirse bu özniteliğe On atanmalı ve seviye olarak Quaternary (dördüncül) kullanılmalıdır. Bu, sıralama anahtarı uzunluğunu ve dizge karşılaştırma başarımını etkiler.

Olası değerler:

Collator::NUMERIC_COLLATION

Etkin kılınırsa bu öznitelik, rakamlardan oluşan altdizgelerin sayısal değerleri için bir karşılaştırma anahtarı üretir. Bu, sıralamada '2''den sonra '100' almanın bir yoludur.

Olası değerler:

Collator::DEFAULT_VALUE
Collator::PRIMARY
Collator::SECONDARY
Collator::TERTIARY
Collator::DEFAULT_STRENGTH
Collator::QUATERNARY
Collator::IDENTICAL
Collator::OFF
Collator::ON
Collator::SHIFTED
Collator::NON_IGNORABLE
Collator::LOWER_FIRST
Collator::UPPER_FIRST
Collator::SORT_REGULAR

Collator::SORT_STRING

Collator::SORT_NUMERIC

İçindekiler

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top