Map-based autoloader across php and phar resources

⌈⌋ branch:  Canonic Autoloader


Hex Artifact Content

Artifact 97ac2bb692334b98628170e5b19a82af5c39ee86:

  • File manpage.1 — part of check-in [c956af642c] at 2015-01-22 19:34:07 on branch trunk — Typos in manpage. (user: mario size: 2207)

0000: 2e 5c 22 0a 2e 54 48 20 73 68 61 72 65 64 2e 70  .\"..TH shared.p
0010: 68 61 72 20 22 30 2e 33 2e 33 20 2d 20 53 65 70  har "0.3.3 - Sep
0020: 74 65 6d 62 65 72 20 32 30 31 34 22 20 22 42 53  tember 2014" "BS
0030: 44 2f 4c 69 6e 75 78 22 20 22 55 73 65 72 20 4d  D/Linux" "User M
0040: 61 6e 75 61 6c 73 22 0a 2e 53 48 20 4e 41 4d 45  anuals"..SH NAME
0050: 0a 73 68 61 72 65 64 2e 70 68 61 72 20 5c 2d 20  .shared.phar \- 
0060: 43 61 6e 6f 6e 69 63 20 50 48 50 20 41 75 74 6f  Canonic PHP Auto
0070: 6c 6f 61 64 65 72 0a 2e 53 48 20 53 59 4e 4f 50  loader..SH SYNOP
0080: 53 49 53 0a 2e 49 20 70 68 70 0a 2e 42 20 73 68  SIS..I php..B sh
0090: 61 72 65 64 2e 70 68 61 72 0a 2e 52 42 20 5b 20  ared.phar..RB [ 
00a0: 70 61 74 68 20 2c 0a 2e 49 52 20 2e 2e 2e 20 5d  path ,..IR ... ]
00b0: 0a 2e 53 48 20 44 45 53 43 52 49 50 54 49 4f 4e  ..SH DESCRIPTION
00c0: 0a 73 68 61 72 65 64 2e 70 68 61 72 20 69 73 20  .shared.phar is 
00d0: 61 20 6d 61 70 2d 62 61 73 65 64 20 61 75 74 6f  a map-based auto
00e0: 6c 6f 61 64 65 72 20 66 6f 72 0a 2e 42 20 2a 2e  loader for..B *.
00f0: 70 68 70 0a 73 63 72 69 70 74 73 20 61 6e 64 0a  php.scripts and.
0100: 2e 42 20 2a 2e 70 68 61 72 0a 63 6f 6c 6c 65 63  .B *.phar.collec
0110: 74 69 6f 6e 73 2e 20 49 74 20 73 65 6c 66 2d 63  tions. It self-c
0120: 6f 6e 74 61 69 6e 73 20 74 68 65 20 67 65 6e 65  ontains the gene
0130: 72 61 74 65 64 20 63 6c 61 73 73 20 6d 61 70 20  rated class map 
0140: 61 6e 64 0a 61 6c 6c 20 75 70 64 61 74 69 6e 67  and.all updating
0150: 20 6c 6f 67 69 63 2e 0a 2e 50 0a 2e 56 53 0a 4f   logic...P..VS.O
0160: 6e 20 69 6e 76 6f 63 61 74 69 6f 6e 20 66 72 6f  n invocation fro
0170: 6d 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69  m the command li
0180: 6e 65 20 69 74 20 73 63 61 6e 73 20 74 68 65 20  ne it scans the 
0190: 64 69 72 65 63 74 6f 72 69 65 73 0a 62 65 6e 65  directories.bene
01a0: 61 74 68 20 69 74 73 20 6c 6f 63 61 74 69 6f 6e  ath its location
01b0: 2e 20 54 68 65 20 70 72 69 6d 61 72 79 20 69 6e  . The primary in
01c0: 73 74 61 6c 6c 61 74 69 6f 6e 20 69 6e 20 2f 75  stallation in /u
01d0: 73 72 2f 73 68 61 72 65 2f 70 68 70 0a 74 68 75  sr/share/php.thu
01e0: 73 20 61 6c 6c 20 67 6c 6f 62 61 6c 6c 79 20 73  s all globally s
01f0: 68 61 72 65 64 20 69 6e 63 6c 75 64 65 73 2e 0a  hared includes..
0200: 2e 50 0a 5c 66 42 4e 6f 74 20 69 6d 70 6c 65 6d  .P.\fBNot implem
0210: 65 6e 74 65 64 3a 5c 66 52 0a 66 75 74 75 72 65  ented:\fR.future
0220: 20 76 65 72 73 69 6f 6e 73 20 77 69 6c 6c 20 61   versions will a
0230: 6c 6c 6f 77 20 74 6f 20 73 70 65 63 69 66 79 20  llow to specify 
0240: 61 20 6c 69 73 74 20 6f 66 20 64 69 72 65 63 74  a list of direct
0250: 6f 72 69 65 73 0a 61 73 20 61 72 67 75 6d 65 6e  ories.as argumen
0260: 74 73 20 74 6f 20 69 6e 63 6c 75 64 65 20 69 6e  ts to include in
0270: 20 74 68 65 20 73 63 61 6e 6e 69 6e 67 20 70 72   the scanning pr
0280: 6f 63 65 73 73 2e 20 48 65 72 65 62 79 0a 2e 49  ocess. Hereby..I
0290: 52 20 2e 2f 20 72 65 6c 61 74 69 76 65 0a 70 61  R ./ relative.pa
02a0: 74 68 20 6e 61 6d 65 73 20 77 69 6c 6c 20 62 65  th names will be
02b0: 20 6b 65 70 74 20 72 65 6c 61 74 69 76 65 20 74   kept relative t
02c0: 6f 20 0a 2e 42 20 73 68 61 72 65 64 2e 70 68 61  o ..B shared.pha
02d0: 72 0a 69 74 73 65 6c 66 2e 20 57 68 69 6c 65 20  r.itself. While 
02e0: 61 62 73 6f 6c 75 74 65 0a 2e 49 52 20 2f 20 70  absolute..IR / p
02f0: 61 74 68 73 0a 61 72 65 20 6e 65 76 65 72 20 74  aths.are never t
0300: 72 61 6e 73 66 6f 72 6d 65 64 2e 0a 2e 53 48 20  ransformed...SH 
0310: 46 45 41 54 55 52 45 53 0a 2e 49 50 20 5c 28 62  FEATURES..IP \(b
0320: 75 20 32 0a 54 72 61 76 65 72 73 65 73 20 61 6e  u 2.Traverses an
0330: 79 20 64 69 72 65 63 74 6f 72 79 20 73 74 72 75  y directory stru
0340: 63 74 75 72 65 2c 20 62 75 74 20 73 6b 69 70 73  cture, but skips
0350: 20 2e 68 69 64 64 65 6e 20 64 69 72 73 2c 0a 77   .hidden dirs,.w
0360: 68 69 6c 65 20 73 63 61 6e 6e 69 6e 67 20 2a 2e  hile scanning *.
0370: 70 68 70 20 73 63 72 69 70 74 73 2e 0a 2e 49 50  php scripts...IP
0380: 20 5c 28 62 75 20 32 0a 53 74 6f 72 65 73 20 69   \(bu 2.Stores i
0390: 64 65 6e 74 69 66 69 65 72 73 20 28 63 6c 61 73  dentifiers (clas
03a0: 73 65 73 2c 20 66 75 6e 63 74 69 6f 6e 73 29 20  ses, functions) 
03b0: 63 61 73 65 2d 69 6e 73 65 6e 73 69 74 69 76 65  case-insensitive
03c0: 6c 79 0a 66 6f 72 20 63 6f 6e 73 69 73 74 65 6e  ly.for consisten
03d0: 63 79 20 77 69 74 68 20 50 48 50 2e 0a 2e 49 50  cy with PHP...IP
03e0: 20 5c 28 62 75 20 32 0a 50 68 61 72 20 63 6f 6c   \(bu 2.Phar col
03f0: 6c 65 63 74 69 6f 6e 73 20 61 72 65 20 74 72 61  lections are tra
0400: 76 65 72 73 65 64 20 61 73 20 77 65 6c 6c 2c 20  versed as well, 
0410: 61 6e 64 20 72 65 66 65 72 65 6e 63 65 73 0a 73  and references.s
0420: 74 6f 72 65 64 20 77 69 74 68 20 72 65 6c 61 74  tored with relat
0430: 69 76 65 20 70 61 74 68 73 2e 0a 2e 49 50 20 5c  ive paths...IP \
0440: 28 62 75 20 32 0a 49 74 20 61 6c 73 6f 20 70 72  (bu 2.It also pr
0450: 65 70 61 72 65 73 20 66 6f 72 20 66 75 6e 63 74  epares for funct
0460: 69 6f 6e 20 61 75 74 6f 6c 6f 61 64 69 6e 67 20  ion autoloading 
0470: 73 75 70 70 6f 72 74 20 28 66 61 72 2d 66 65 74  support (far-fet
0480: 63 68 65 64 0a 66 75 74 75 72 65 2c 20 69 66 20  ched.future, if 
0490: 65 76 65 72 20 70 68 70 2d 64 65 76 20 67 65 74  ever php-dev get
04a0: 73 20 61 20 67 72 69 70 29 2e 0a 2e 53 48 20 50  s a grip)...SH P
04b0: 48 50 20 55 53 41 47 45 0a 41 63 74 69 76 61 74  HP USAGE.Activat
04c0: 69 6e 67 20 74 68 65 20 61 75 74 6f 6c 6f 61 64  ing the autoload
04d0: 65 72 20 77 69 74 68 69 6e 20 50 48 50 20 61 70  er within PHP ap
04e0: 70 6c 69 63 61 74 69 6f 6e 73 20 69 73 20 61 73  plications is as
04f0: 20 73 69 6d 70 6c 65 20 61 73 20 63 61 6c 6c 69   simple as calli
0500: 6e 67 0a 2e 49 50 20 0a 2e 42 52 20 69 6e 63 6c  ng..IP ..BR incl
0510: 75 64 65 5f 6f 6e 63 65 20 28 0a 2e 49 20 22 22  ude_once (..I ""
0520: 22 73 68 61 72 65 64 2e 70 68 61 72 22 22 0a 2e  "shared.phar""..
0530: 52 42 20 29 20 3b 0a 2e 50 0a 57 68 69 63 68 20  RB ) ;..P.Which 
0540: 77 69 6c 6c 20 69 6d 70 6c 69 63 69 74 6c 79 20  will implicitly 
0550: 61 63 74 69 76 61 74 65 20 74 68 65 20 63 6f 6e  activate the con
0560: 74 61 69 6e 65 64 20 63 6c 61 73 73 6d 61 70 2e  tained classmap.
0570: 0a 2e 53 48 20 4d 41 4e 55 41 4c 20 55 50 44 41  ..SH MANUAL UPDA
0580: 54 45 53 0a 49 66 20 74 68 65 72 65 27 73 20 6e  TES.If there's n
0590: 6f 20 62 69 6e 66 6d 74 20 72 65 67 69 73 74 65  o binfmt registe
05a0: 72 65 64 20 66 6f 72 20 2e 70 68 61 72 20 66 69  red for .phar fi
05b0: 6c 65 73 2c 20 74 68 65 6e 20 74 68 65 20 70 68  les, then the ph
05c0: 70 20 69 6e 74 65 72 70 72 65 74 65 72 0a 6d 75  p interpreter.mu
05d0: 73 74 20 62 65 20 70 72 65 66 69 78 65 64 20 66  st be prefixed f
05e0: 6f 72 20 69 6e 76 6f 6b 69 6e 67 20 74 68 65 20  or invoking the 
05f0: 75 70 64 61 74 65 20 6d 65 63 68 61 6e 69 73 6d  update mechanism
0600: 3a 0a 2e 49 50 0a 2e 49 42 20 22 70 68 70 20 22  :..IP..IB "php "
0610: 20 22 2d 64 22 20 22 70 68 61 72 2e 72 65 61 64   "-d" "phar.read
0620: 6f 6e 6c 79 22 20 22 3d 22 20 22 30 20 22 20 2e  only" "=" "0 " .
0630: 2f 73 68 61 72 65 64 2e 70 68 61 72 0a 2e 50 0a  /shared.phar..P.
0640: 2e 53 48 20 45 4e 56 49 52 4f 4e 4d 45 4e 54 0a  .SH ENVIRONMENT.
0650: 2e 54 50 0a 2e 49 52 20 41 55 54 4f 4c 4f 41 44  .TP..IR AUTOLOAD
0660: 45 52 5f 55 50 44 41 54 45 20 22 20 28 62 6f 6f  ER_UPDATE " (boo
0670: 6c 65 61 6e 29 22 0a 57 69 6c 6c 20 65 6e 61 62  lean)".Will enab
0680: 6c 65 20 69 6d 70 6c 69 63 69 74 20 63 6c 61 73  le implicit clas
0690: 73 6d 61 70 20 75 70 64 61 74 65 73 20 6f 6e 20  smap updates on 
06a0: 6d 69 73 73 65 64 20 69 64 65 6e 74 69 66 69 65  missed identifie
06b0: 72 20 28 63 6c 61 73 73 29 0a 6c 6f 6f 6b 75 70  r (class).lookup
06c0: 73 20 77 68 65 6e 20 72 75 6e 20 69 6e 20 77 65  s when run in we
06d0: 62 73 65 72 76 65 72 20 63 6f 6e 74 65 78 74 2e  bserver context.
06e0: 20 41 64 76 69 73 61 62 6c 65 20 66 6f 72 20 64   Advisable for d
06f0: 65 76 65 6c 6f 70 6d 65 6e 74 20 73 65 74 75 70  evelopment setup
0700: 73 2e 0a 42 65 73 74 20 73 65 74 20 76 69 61 0a  s..Best set via.
0710: 2e 49 42 20 22 2e 68 74 61 63 63 65 73 73 20 22  .IB ".htaccess "
0720: 20 53 65 74 45 6e 76 0a 6f 72 20 69 6e 20 56 69   SetEnv.or in Vi
0730: 72 74 75 61 6c 48 6f 73 74 20 73 65 63 74 69 6f  rtualHost sectio
0740: 6e 2e 0a 2e 53 48 20 50 48 50 2e 49 4e 49 20 53  n...SH PHP.INI S
0750: 45 54 54 49 4e 47 53 0a 2e 54 50 0a 2e 49 52 20  ETTINGS..TP..IR 
0760: 70 68 61 72 2e 72 65 61 64 6f 6e 6c 79 20 22 20  phar.readonly " 
0770: 28 62 6f 6f 6c 65 61 6e 29 22 0a 4e 65 65 64 73  (boolean)".Needs
0780: 20 74 6f 20 62 65 20 73 65 74 20 74 6f 0a 2e 49   to be set to..I
0790: 20 30 0a 74 6f 20 61 6c 6c 6f 77 20 75 70 64 61   0.to allow upda
07a0: 74 69 6e 67 20 6f 66 20 70 68 61 72 73 2e 0a 2e  ting of phars...
07b0: 53 48 20 46 4f 52 4d 41 54 0a 54 68 65 20 64 65  SH FORMAT.The de
07c0: 66 61 75 6c 74 0a 2e 42 20 73 68 61 72 65 64 2e  fault..B shared.
07d0: 70 68 61 72 0a 70 61 63 6b 61 67 65 20 69 73 20  phar.package is 
07e0: 61 20 50 4b 5a 49 50 20 61 72 63 68 69 76 65 2e  a PKZIP archive.
07f0: 20 49 74 27 73 20 63 6f 6d 70 72 69 73 65 64 20   It's comprised 
0800: 6f 66 20 61 0a 2e 49 52 20 2e 70 68 61 72 2f 73  of a..IR .phar/s
0810: 74 75 62 2e 70 68 70 20 22 2c 20 22 20 61 75 74  tub.php ", " aut
0820: 6f 6c 6f 61 64 2e 75 70 64 61 74 65 2e 70 68 70  oload.update.php
0830: 20 22 2c 20 22 20 61 75 74 6f 6c 6f 61 64 2e 6d   ", " autoload.m
0840: 61 70 2e 70 68 70 0a 61 6e 64 20 6d 61 79 20 62  ap.php.and may b
0850: 65 20 73 70 6c 69 74 20 75 70 20 66 6f 72 20 63  e split up for c
0860: 75 72 72 65 6e 74 20 30 2e 33 2e 78 20 76 65 72  urrent 0.3.x ver
0870: 73 69 6f 6e 73 2e 0a 2e 53 48 20 22 53 45 45 20  sions...SH "SEE 
0880: 41 4c 53 4f 22 0a 2e 42 52 20 70 68 70 20 28 31  ALSO"..BR php (1
0890: 29 0a 2e 42 52 20 70 68 61 72 20 28 35 29 0a     )..BR phar (5).