<?xml version="1.0"?>
<News hasArchived="true" page="8832" pageCount="10714" pageSize="10" timestamp="Fri, 03 Jul 2026 13:53:49 -0400" url="https://my3.my.umbc.edu/posts.xml?page=8832">
<NewsItem contentIssues="true" id="27937" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27937">
<Title>Formal degree vs. self taught</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/thumbnail14.jpg" alt="Thumbnail" width="200" height="160" style="max-width: 100%; height: auto;">For many web design professionals, there was no option but to be self taught. Years ago, the academic qualifications simply didn’t exist. Sure, you could study design, but you’d be left to learn the technology by yourself. You could take an I.T. course, but you’d be lacking design skills.</p>
    <p>Perhaps that’s the reason web designers come from such disparate backgrounds; it’s hard to imagine accountants hailing from such wildly different career paths.</p>
    <p>But times have changed, and academic qualifications focussing on both design and code are now commonplace worldwide. Many of those courses have been developed by the very designers and developers who chose to find their own way a decade ago.</p>
    <p>So which is preferable? A carefully designed course, filled with modules covering the industry’s most commonly requested skills; or hard work and self application, learning techniques as and when required?</p>
    <p>Check out the infographic below for a better idea of the pros and cons.</p>
    <p><img src="http://netdna.webdesignerdepot.com/uploads/2013/04/education-for-web-designers1.jpg" width="650" style="max-width: 100%; height: auto;"> </p>
    <p> Embed:<br>&lt;a href='<a href="http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/">http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/</a>' &gt;&lt;img src='<a href="http://netdna.webdesignerdepot.com/uploads/2013/04/education-for-web-designers1.jpg">http://netdna.webdesignerdepot.com/uploads/2013/04/education-for-web-designers1.jpg</a>' /&gt;&lt;/a&gt;&lt;br/&gt;
    Formal degree vs. self taught - infographic created by &lt;a href="'<a href="http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/%22&gt;WebdesignerDepot&lt;/a&amp;gt">http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/"&gt;WebdesignerDepot&lt;/a&amp;gt</a>;</p>
    <p><em><strong>Are you formally educated or self taught? Would you have better off taking the other route? Let us know in the comments.</strong></em></p>
    <p><br><br>
    </p>
    <table width="100%">
    <tbody>
    <tr>
    <td>
          <a href="http://www.mightydeals.com/deal/vandelay-textures-2.html?ref=inwidget" rel="nofollow external" class="bo"><strong>250 High-Resolution Textures with Extended License – only $19!</strong></a>
        </td>
    <td>
          <a href="http://www.mightydeals.com/?ref=inwidget" rel="nofollow external" class="bo"><br>
            <img src="http://mightydeals.com/web/images/widget-logo.png" height="40" width="90" style="max-width: 100%; height: auto;"><br>
          </a>
        </td>
    </tr>
    </tbody>
    </table>
    <p><br> </p>
    <a href="http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/" rel="nofollow external" class="bo">Source</a>
    </div>
]]>
</Body>
<Summary>For many web design professionals, there was no option but to be self taught. Years ago, the academic qualifications simply didn’t exist. Sure, you could study design, but you’d be left to learn...</Summary>
<Website>http://www.webdesignerdepot.com/2013/04/formal-degree-vs-self-taught/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27937/guest@my.umbc.edu/506836796d6b0095e83f06f6b5851a56/api/pixel</TrackingUrl>
<Tag>art</Tag>
<Tag>best-education-for-web-design</Tag>
<Tag>career</Tag>
<Tag>career-path-for-web-design</Tag>
<Tag>css</Tag>
<Tag>design</Tag>
<Tag>development</Tag>
<Tag>formal-degree</Tag>
<Tag>html</Tag>
<Tag>html5</Tag>
<Tag>illustrator</Tag>
<Tag>infographics</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>oracle</Tag>
<Tag>photoshop</Tag>
<Tag>php</Tag>
<Tag>self-taught-web-designers</Tag>
<Tag>sql</Tag>
<Tag>web-design</Tag>
<Tag>web-design-education</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>1</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 15:15:31 -0400</PostedAt>
<EditAt>Thu, 18 Apr 2013 15:15:31 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="false" id="110202" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110202">
<Title>A New Context Reviewed by City Paper</Title>
<Body>
<![CDATA[
    <div class="html-content">The exhibition currently in the Library Gallery, A New Context: Photographs from the Baltimore Sun Revisited, was featured in a City Paper article today. The favorable review of show, curated from UMBC’s Baltimore Sun Archives, was written by Joe MacLeod. In the piece, MacLeod explores the exhibition’s ability to highlight a transformation in the responsibility of photography in the news, and comments on how biases of the time, revealed in the edited photographs, influenced reporting. He says of the blatantly prejudiced cropping and its effect on the picture as a whole, “[c]ontext is all, and history changes context and what we decide an …</div>
]]>
</Body>
<Summary>The exhibition currently in the Library Gallery, A New Context: Photographs from the Baltimore Sun Revisited, was featured in a City Paper article today. The favorable review of show, curated from...</Summary>
<Website>https://news.umbc.edu/a-new-context-reviewed-by-city-paper/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110202/guest@my.umbc.edu/2757b092ab8e9eb5ae00e5c1912c2659/api/pixel</TrackingUrl>
<Tag>arts-and-culture</Tag>
<Tag>cahss</Tag>
<Tag>visualarts</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 15:13:07 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="110203" important="false" status="posted" url="https://my3.my.umbc.edu/posts/110203">
<Title>Center for Aging Studies Receives NIA Grant for Autonomy Research</Title>
<Body>
<![CDATA[
    <div class="html-content">UMBC’s Center for Aging Studies has received a 17-month grant from the National Institute on Aging (NIA) to expand the research project “Autonomy in Assisted Living: A Cultural Analysis.” This grant extends a four-year ethnographic study of autonomy to include dementia care units affiliated with three of the sites in the parent grant. The Principal Investigators of this research are Professor Robert L. Rubinstein and Associate Research Scientist Ann Christine Frankowski. The research team includes ethnographer Amanda D. Peeples and GRA Colleen R. Bennett.</div>
]]>
</Body>
<Summary>UMBC’s Center for Aging Studies has received a 17-month grant from the National Institute on Aging (NIA) to expand the research project “Autonomy in Assisted Living: A Cultural Analysis.” This...</Summary>
<Website>https://news.umbc.edu/center-for-aging-studies-receives-nia-grant-for-autonomy-research/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/110203/guest@my.umbc.edu/e416a90d125b62341c4f326bdc3b3935/api/pixel</TrackingUrl>
<Tag>cahss</Tag>
<Tag>policy-and-society</Tag>
<Tag>saph</Tag>
<Group token="umbc-news">UMBC News</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/umbc-news</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/original.png?1632921809</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xlarge.png?1632921809</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/large.png?1632921809</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/medium.png?1632921809</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/small.png?1632921809</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xsmall.png?1632921809</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/001/944/2c79aeea85b1abb37f8cf9fbcdc382b0/xxsmall.png?1632921809</AvatarUrl>
<Sponsor>UMBC News</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:48:23 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27929" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27929">
<Title>Service Downtime: Friday, April 19, 2013  Noon - 1 pm</Title>
<Body>
<![CDATA[
    <div class="html-content"><span>There will be no shuttle service between noon and 1pm on Friday, April 19, 2013. Regular service resumes at 1p.</span></div>
]]>
</Body>
<Summary>There will be no shuttle service between noon and 1pm on Friday, April 19, 2013. Regular service resumes at 1p.</Summary>
<Website>http://www.umbc.edu/transit</Website>
<AttachmentKind>Photo</AttachmentKind>
<AttachmentUrl>https://assets3-my.umbc.edu/system/shared/attachments/669732d02f113fc10921da93506a1cbe/6a47f72e/news/000/027/929/c5383525e91474a4e5d7dcfee92c054f/montly staff meeting.jpg?1366310685</AttachmentUrl>
<Attachments>
<Attachment kind="Photo" url="https://my3.my.umbc.edu/posts/27929/attachments/9906"></Attachment>
</Attachments>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27929/guest@my.umbc.edu/38ab0e3ef10cf77c28cb5f81c9d45929/api/pixel</TrackingUrl>
<Group token="transit">UMBC Transit </Group>
<GroupUrl>https://my3.my.umbc.edu/groups/transit</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/xsmall.png?1448285304</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/original.png?1448285304</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/xxlarge.png?1448285304</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/xlarge.png?1448285304</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/large.png?1448285304</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/medium.png?1448285304</AvatarUrl>
<AvatarUrl size="small">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/small.png?1448285304</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/xsmall.png?1448285304</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/592/23ec211d0365be0665abf1354689014d/xxsmall.png?1448285304</AvatarUrl>
<Sponsor>UMBC Transit</Sponsor>
<ThumbnailUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/xxlarge.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/xlarge.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="large">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/large.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="medium">https://assets2-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/medium.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="small">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/small.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/xsmall.jpg?1366310516</ThumbnailUrl>
<ThumbnailUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/thumbnails/news/000/027/929/d6290b8d794ef655534893019447d118/xxsmall.jpg?1366310516</ThumbnailUrl>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:45:02 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="27928" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27928">
<Title>CMSC 487 (Network Security) for Fall 2013</Title>
<Body>
<![CDATA[
    <div class="html-content"><span>There have been several requests to take CMSC 487 by students who have done 421, but not 481. Knowing the full suite of material covered in 481 is not required to do 487, though it would help. However, students do need to have a basic idea of networking concepts specially at layer 3 – IP addresses, hosts, ports -- to the level of being able to deal with sockets and socket programs. If you believe that you know these basic concepts, and are interested in taking the course, please email Dr. Joshi at &lt;<a href="mailto:joshi@umbc.edu" rel="nofollow external" class="bo">joshi@umbc.edu</a>&gt; to request permission. Please list any 400 level courses you have taken, and your GPA. Recall that 421 <strong>remains</strong> a prerequisite – the only issue is the waiving of 481 as a prerequisite.</span></div>
]]>
</Body>
<Summary>There have been several requests to take CMSC 487 by students who have done 421, but not 481. Knowing the full suite of material covered in 481 is not required to do 487, though it would help....</Summary>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27928/guest@my.umbc.edu/dbbb7b77e550d5ed94074b5f69c8fe76/api/pixel</TrackingUrl>
<Group token="csee">Computer Science and Electrical Engineering</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/csee</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/original.png?1314043393</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xlarge.png?1314043393</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/large.png?1314043393</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/medium.png?1314043393</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/small.png?1314043393</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xsmall.png?1314043393</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/099/d117dca133c64bf78a4b7696dd007189/xxsmall.png?1314043393</AvatarUrl>
<Sponsor>Computer Science and Electrical Engineering</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:35:33 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="false" id="27932" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27932">
<Title>How do I view my completed assignment, including grade and feedback?</Title>
<Body>
<![CDATA[
    <div class="html-content"><div>    <p>
            Page
                <strong>edited</strong> by
                        <a href="https://wiki.umbc.edu/display/~amocko1%0A" rel="nofollow external" class="bo">Andrea Mocko</a>
                </p>
            <div>
            <h2>Tell Me</h2>
    <p>You may be able to  access  the assignment in the content area and see what you submitted and see the instructor's comments, grades and re-writes.</p>
    <p>To view grades in general, or if a specific assignment has been made unavailable on the page where you originally accessed it, go to the My Grades page.</p>
    <ol>
    <li>
    <p>Select the My Grades link, which is typically on the left-hand menu.</p>    <div>
                                
                    <div>
                                <p>If the link you are looking for is not on the menu, look for a link called Tools. The Tools page is a hub with links to all available tools in the course.</p>
                        </div>
        </div>
    </li>
    <li>Click on the grade hyperlink for the appropriate assignment.<br> Submission History for this assignment is shown. Feedback can include grade, comments, and links to download any files returned by the instructor.</li>
    </ol>
    <h2>Rate this Article</h2>
    <p>
    
    
    
    
    <strong>Was this helpful?</strong>
    <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D5244810&amp;q=33&amp;v=1&amp;s=faq&amp;l=blackboard+student+assignments" rel="nofollow external" class="bo">Yes</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D5244810" rel="nofollow external" class="bo">No</a>
     | <a href="https://docs.google.com/a/umbc.edu/spreadsheet/viewform?formkey=dEpyOEZxa29QY05BaVpBVzZSYmRMM0E6MA&amp;entry_15=http%3A%2F%2Fwiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D5244810" rel="nofollow external" class="bo">Correct or Suggest an Article</a>
     | <a href="https://apps-my.umbc.edu/apps/rt-track/script.php?u=http://wiki.umbc.edu%2Fpages%2Fviewpage.action%3FpageId%3D5244810&amp;q=33&amp;v=0&amp;s=faq&amp;l=blackboard+student+assignments" rel="nofollow external" class="bo">Request Help</a></p>
    <p> </p>
        </div>
            <div>
           <a href="https://wiki.umbc.edu/pages/viewpage.action?pageId=5244810" rel="nofollow external" class="bo">View Online</a>
                  ·
           <a href="https://wiki.umbc.edu/pages/diffpagesbyversion.action?pageId=5244810&amp;revisedVersion=8&amp;originalVersion=7" rel="nofollow external" class="bo">View Changes Online</a>       
                      </div>
    </div></div>
]]>
</Body>
<Summary>Page             edited by                     Andrea Mocko                                  Tell Me  You may be able to  access  the assignment in the content area and see what you submitted and...</Summary>
<Website>https://wiki.umbc.edu/pages/viewpage.action?pageId=5244810</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27932/guest@my.umbc.edu/3e126cb5f247e8fb95bb6ef560713abd/api/pixel</TrackingUrl>
<Tag>assignments</Tag>
<Tag>blackboard</Tag>
<Tag>faq</Tag>
<Tag>student</Tag>
<Group token="retired-428">UMBC FAQ</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-428</GroupUrl>
<AvatarUrl>https://assets4-my.umbc.edu/images/avatars/group/1/xsmall.png?1782921639</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/images/avatars/group/1/original.png?1782921639</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/images/avatars/group/1/xxlarge.png?1782921639</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/images/avatars/group/1/xlarge.png?1782921639</AvatarUrl>
<AvatarUrl size="large">https://assets1-my.umbc.edu/images/avatars/group/1/large.png?1782921639</AvatarUrl>
<AvatarUrl size="medium">https://assets4-my.umbc.edu/images/avatars/group/1/medium.png?1782921639</AvatarUrl>
<AvatarUrl size="small">https://assets2-my.umbc.edu/images/avatars/group/1/small.png?1782921639</AvatarUrl>
<AvatarUrl size="xsmall">https://assets4-my.umbc.edu/images/avatars/group/1/xsmall.png?1782921639</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets1-my.umbc.edu/images/avatars/group/1/xxsmall.png?1782921639</AvatarUrl>
<Sponsor>UMBC FAQ</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:32:51 -0400</PostedAt>
<EditAt>Sat, 03 Aug 2013 18:11:55 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27930" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27930">
<Title>&#8220;Is God Sexist or Affirming?&#8221; Tonight in Academic IV at 7:30pm!</Title>
<Body>
<![CDATA[
    <div class="html-content">A couple quick things about the “Is God Sexist or Affirming?” event tonight: Please “paw” the event on myumbc to help us promote the event! <a href="http://my.umbc.edu/events/17497">http://my.umbc.edu/events/17497</a> We encourage you to personally invite friends and walk over together with them. This … <a href="http://umbciv.wordpress.com/2013/04/18/is-god-sexist-or-affirming-tonight-in-academic-iv-at-730pm/" rel="nofollow external" class="bo">Continue reading <span>→</span></a>
    </div>
]]>
</Body>
<Summary>A couple quick things about the “Is God Sexist or Affirming?” event tonight: Please “paw” the event on myumbc to help us promote the event! http://my.umbc.edu/events/17497 We encourage you to...</Summary>
<Website>http://umbciv.wordpress.com/2013/04/18/is-god-sexist-or-affirming-tonight-in-academic-iv-at-730pm/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27930/guest@my.umbc.edu/6e531c3dad2d2c2a9dc53432ee155976/api/pixel</TrackingUrl>
<Tag>posts</Tag>
<Group token="iv">InterVarsity Christian Fellowship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/iv</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/xsmall.png?1567536344</AvatarUrl>
<AvatarUrl size="original">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/original.png?1567536344</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/xxlarge.png?1567536344</AvatarUrl>
<AvatarUrl size="xlarge">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/xlarge.png?1567536344</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/large.png?1567536344</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/medium.png?1567536344</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/small.png?1567536344</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/xsmall.png?1567536344</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/094/dd82d58268453ca1c56996aa87e97fca/xxsmall.png?1567536344</AvatarUrl>
<Sponsor>InterVarsity Christian Fellowship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>false</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:16:19 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27931" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27931">
<Title>Bright Idea: Startup Aims to Advance Solar Energy in Developing Countries</Title>
<Body>
<![CDATA[
    <div class="html-content">With a low-cost technology, 21-year-old Eden Full seeks to make solar energy more efficient and affordable.<br><br><a href="http://da.feedsportal.com/r/163644648756/u/49/f/625555/c/34343/s/2ae2590f/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/163644648756/u/49/f/625555/c/34343/s/2ae2590f/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>With a low-cost technology, 21-year-old Eden Full seeks to make solar energy more efficient and affordable.</Summary>
<Website>http://feedproxy.google.com/~r/entrepreneur/startingabusiness/~3/llVT-Gedz2M/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27931/guest@my.umbc.edu/c8835a7c6d2bc80579603425039ea0f1/api/pixel</TrackingUrl>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 14:00:00 -0400</PostedAt>
</NewsItem>

<NewsItem contentIssues="true" id="27919" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27919">
<Title>Reflection in PHP</Title>
<Body>
<![CDATA[
    <div class="html-content">
    <a href="http://rss.buysellads.com/click.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31408&amp;c=301684400" rel="nofollow external" class="bo"><img src="http://rss.buysellads.com/img.php?z=1260013&amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;a=31408&amp;c=301684400" alt="" style="max-width: 100%; height: auto;"></a><p>Reflection is generally defined as a program’s ability to inspect itself and modify its logic at execution time. In less technical terms, reflection is asking an object to tell you about its properties and methods, and altering those members (even private ones). In this lesson, we’ll dig into how this is accomplished, and when it might prove useful.</p>
    <p></p>
    <hr>
    <h2>A Little History</h2>
    <p>At the dawn of the age of programming, there was the assembly language. A program written in assembly resides on physical registers inside the computer. Its composition, methods and values could be inspected at any time by reading the registers. Even more, you could alter the program while it was running by simply modifying those registers. It required some intimate knowledge about the running program, but it was inherently reflective.</p>
    <blockquote><p>As with any cool toy, use reflection, but don’t abuse it.</p></blockquote>
    <p>As higher-level programming languages (like C) came along, this reflectivity faded and disappeared. It was later re-introduced with object-oriented programming.</p>
    <p>Today, most programming languages can use reflection. Statically typed languages, such as Java, have little to no problems with reflection. What I find interesting, however, is that any dynamically-typed language (like PHP or Ruby) is heavily based on reflection. Without the concept of reflection, duck-typing would most likely be impossible to implement. When you send one object to another (a parameter, for example), the receiving object has no way of knowing the structure and type of that object. All it can do is use reflection to identify the methods that can and cannot be called on the received object.</p>
    <hr>
    <h2>A Simple Example</h2>
    <p>Reflection is prevalent in PHP. In fact, there are several situations when you may use it without even knowing it. For example:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    require_once 'Editor.php';&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle() {&#x000A;    		$editor = new Editor('John Doe');&#x000A;    		$editor-&gt;setNextArticle('135523');&#x000A;    		$editor-&gt;publish();&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>And:</p>
    <pre>// Editor.php&#x000A;    &#x000A;    class Editor {&#x000A;    &#x000A;    	private $name;&#x000A;    	public $articleId;&#x000A;    &#x000A;    	function __construct($name) {&#x000A;    		$this-&gt;name = $name;&#x000A;    	}&#x000A;    &#x000A;    	public function setNextArticle($articleId) {&#x000A;    		$this-&gt;articleId = $articleId;&#x000A;    	}&#x000A;    &#x000A;    	public function publish() {&#x000A;    		// publish logic goes here&#x000A;    		return true;&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>In this code, we have a direct call to a locally initialized variable with a known type. Creating the editor in <code>publishNextArticle()</code> makes it obvious that the <code>$editor</code> variable is of type <code>Editor</code>. No reflection is needed here, but let’s introduce a new class, called <code>Manager</code>:</p>
    <pre>// Manager.php&#x000A;    &#x000A;    require_once './Editor.php';&#x000A;    require_once './Nettuts.php';&#x000A;    &#x000A;    class Manager {&#x000A;    &#x000A;    	function doJobFor(DateTime $date) {&#x000A;    		if ((new DateTime())-&gt;getTimestamp() &gt; $date-&gt;getTimestamp()) {&#x000A;    			$editor = new Editor('John Doe');&#x000A;    			$nettuts = new Nettuts();&#x000A;    			$nettuts-&gt;publishNextArticle($editor);&#x000A;    		}&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Next, modify <code>Nettuts</code>, like so:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		$editor-&gt;setNextArticle('135523');&#x000A;    		$editor-&gt;publish();&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Now, <code>Nettuts</code> has absolutely no relation to the <code>Editor</code> class. It does not include its file, it does not initialize its class and it does not even know it exists. I could pass an object of any type into the <code>publishNextArticle()</code> method and the code would work.</p>  <img src="http://cdn.tutsplus.com/net.tutsplus.com/authors/jeremymcpeak/php-reflection-class-diagram1.png" alt="Class Diagram" style="max-width: 100%; height: auto;"><br> <p>As you can see from this class diagram, <code>Nettuts</code> only has a direct relationship to <code>Manager</code>. <code>Manager</code> creates it, and therefore, <code>Manager</code> depends on <code>Nettuts</code>. But <code>Nettuts</code> no longer has any relation to the <code>Editor</code> class, and <code>Editor</code> is only related to <code>Manager</code>.</p>
    <p>At runtime, <code>Nettuts</code> uses an <code>Editor</code> object, thus the &lt;&lt;uses&gt;&gt; and the question mark. At runtime, PHP inspects the received object and verifies that it implements the <code>setNextArticle()</code> and <code>publish()</code> methods.</p>
    <h3>Object Member Information</h3>
    <p>We can make PHP display the details of an object. Let’s create a PHPUnit test to help us easily exercise our code:</p>
    <pre>// ReflectionTest.php&#x000A;    &#x000A;    require_once '../Editor.php';&#x000A;    require_once '../Nettuts.php';&#x000A;    &#x000A;    class ReflectionTest extends PHPUnit_Framework_TestCase {&#x000A;    &#x000A;    	function testItCanReflect() {&#x000A;    		$editor = new Editor('John Doe');&#x000A;    		$tuts = new Nettuts();&#x000A;    		$tuts-&gt;publishNextArticle($editor);&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Now, add a <code>var_dump()</code> to <code>Nettuts</code>:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class NetTuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		$editor-&gt;setNextArticle('135523');&#x000A;    		$editor-&gt;publish();&#x000A;    		var_dump(new ReflectionClass($editor));&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Run the test, and watch the magic happen in the output:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .object(ReflectionClass)#197 (1) {&#x000A;      ["name"]=&gt;&#x000A;      string(6) "Editor"&#x000A;    }&#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)</pre>
    <p>Our reflection class has a <code>name</code> property set to the original type of the <code>$editor</code> variable: <code>Editor</code>, but that’s not much information. What about <code>Editor</code>‘s methods?</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		$editor-&gt;setNextArticle('135523');&#x000A;    		$editor-&gt;publish();&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		var_dump($reflector-&gt;getMethods());&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>In this code, we assign the reflection class’ instance to the <code>$reflector</code> variable so that we can now trigger its methods. <code>ReflectionClass</code> exposes a large set of methods that you can use to obtain an object’s information. One of these methods is <code>getMethods()</code>, which returns an array containing each method’s information.</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .array(3) {&#x000A;      [0]=&gt;&#x000A;      &amp;object(ReflectionMethod)#196 (2) {&#x000A;        ["name"]=&gt;&#x000A;        string(11) "__construct"&#x000A;        ["class"]=&gt;&#x000A;        string(6) "Editor"&#x000A;      }&#x000A;      [1]=&gt;&#x000A;      &amp;object(ReflectionMethod)#195 (2) {&#x000A;        ["name"]=&gt;&#x000A;        string(14) "setNextArticle"&#x000A;        ["class"]=&gt;&#x000A;        string(6) "Editor"&#x000A;      }&#x000A;      [2]=&gt;&#x000A;      &amp;object(ReflectionMethod)#194 (2) {&#x000A;        ["name"]=&gt;&#x000A;        string(7) "publish"&#x000A;        ["class"]=&gt;&#x000A;        string(6) "Editor"&#x000A;      }&#x000A;    }&#x000A;    &#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)&#x000A;    </pre>
    <p>Another method, <code>getProperties()</code>, retrieves the properties (even private properties!) of the object:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .array(2) {&#x000A;      [0]=&gt;&#x000A;      &amp;object(ReflectionProperty)#196 (2) {&#x000A;        ["name"]=&gt;&#x000A;        string(4) "name"&#x000A;        ["class"]=&gt;&#x000A;        string(6) "Editor"&#x000A;      }&#x000A;      [1]=&gt;&#x000A;      &amp;object(ReflectionProperty)#195 (2) {&#x000A;        ["name"]=&gt;&#x000A;        string(9) "articleId"&#x000A;        ["class"]=&gt;&#x000A;        string(6) "Editor"&#x000A;      }&#x000A;    }&#x000A;    &#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)&#x000A;    </pre>
    <p>The elements in the arrays returned from <code>getMethod()</code> and <code>getProperties()</code> are of type <code>ReflectionMethod</code> and <code>ReflectionProperty</code>, respectively; these objects are quite useful:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		$editor-&gt;setNextArticle('135523');&#x000A;    		$editor-&gt;publish(); // first call to publish()&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$publishMethod = $reflector-&gt;getMethod('publish');&#x000A;    		$publishMethod-&gt;invoke($editor); // second call to publish()&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Here, we use <code>getMethod()</code> to retrieve a single method with the name of “publish”; the result of which is a <code>ReflectionMethod</code> object. Then, we call the <code>invoke()</code> method, passing it the <code>$editor</code> object, in order to execute the editor’s <code>publish()</code> method a second time.</p>
    <p>This process was simple in our case, because we already had an <code>Editor</code> object to pass to <code>invoke()</code>. We may have several <code>Editor</code> objects in some circumstances, giving us the luxury of choosing which object to use. In other circumstances, we may have no objects to work with, in which case we would need to obtain one from <code>ReflectionClass</code>.</p>
    <p>Let’s modify <code>Editor</code>‘s <code>publish()</code> method to demonstrate the double call:</p>
    <pre>// Editor.php&#x000A;    &#x000A;    class Editor {&#x000A;    &#x000A;    	[ ... ]&#x000A;    &#x000A;    	public function publish() {&#x000A;    		// publish logic goes here&#x000A;    		echo ("HERE\n");&#x000A;    		return true;&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>And the new output:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .HERE&#x000A;    HERE&#x000A;    &#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)&#x000A;    </pre>
    <h3>Manipulating Instance Data</h3>
    <p>We can also modify code at execution time. What about modifying a private variable that has no public setter? Let’s add a method to <code>Editor</code> that retrieves the editor’s name:</p>
    <pre>// Editor.php&#x000A;    &#x000A;    class Editor {&#x000A;    &#x000A;    	private $name;&#x000A;    	public $articleId;&#x000A;    &#x000A;    	function __construct($name) {&#x000A;    		$this-&gt;name = $name;&#x000A;    	}&#x000A;    &#x000A;    	[ ... ]&#x000A;    &#x000A;    	function getEditorName() {&#x000A;    		return $this-&gt;name;&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>This new method is called, <code>getEditorName()</code>, and simply returns the value from the private <code>$name</code> variable. The <code>$name</code> variable is set at creation time, and we have no public methods that let us change it. But we can access this variable using reflection. You might first try the more obvious approach:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		var_dump($editor-&gt;getEditorName());&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$editorName = $reflector-&gt;getProperty('name');&#x000A;    		$editorName-&gt;getValue($editor);&#x000A;    &#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>Even though this outputs the value at the <code>var_dump()</code> line, it throws an error when trying to retrieve the value with reflection:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    Estring(8) "John Doe"&#x000A;    Time: 0 seconds, Memory: 2.50Mb&#x000A;    &#x000A;    There was 1 error:&#x000A;    &#x000A;    1) ReflectionTest::testItCanReflect&#x000A;    ReflectionException: Cannot access non-public member Editor::name&#x000A;    &#x000A;    [...]/Reflection in PHP/Source/NetTuts.php:13&#x000A;    [...]/Reflection in PHP/Source/Tests/ReflectionTest.php:13&#x000A;    /usr/bin/phpunit:46&#x000A;    &#x000A;    FAILURES!&#x000A;    Tests: 1, Assertions: 0, Errors: 1.</pre>
    <p>In order to fix this problem, we need to ask the <code>ReflectionProperty</code> object to grant us access to the private variables and methods:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		var_dump($editor-&gt;getEditorName());&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$editorName = $reflector-&gt;getProperty('name');&#x000A;    		$editorName-&gt;setAccessible(true);&#x000A;    		var_dump($editorName-&gt;getValue($editor));&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>Calling <code>setAccessible()</code> and passing <code>true</code> does the trick:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .string(8) "John Doe"&#x000A;    string(8) "John Doe"&#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)</pre>
    <p>As you can see, we’ve managed to read private variable. The first line of output is from the object’s own <code>getEditorName()</code> method, and the second comes from reflection. But what about changing a private variable’s value? Use the <code>setValue()</code> method:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		var_dump($editor-&gt;getEditorName());&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$editorName = $reflector-&gt;getProperty('name');&#x000A;    		$editorName-&gt;setAccessible(true);&#x000A;    		$editorName-&gt;setValue($editor, 'Mark Twain');&#x000A;    		var_dump($editorName-&gt;getValue($editor));&#x000A;    	}&#x000A;    &#x000A;    }</pre>
    <p>And that’s it. This code changes “John Doe” to “Mark Twain”.</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .string(8) "John Doe"&#x000A;    string(10) "Mark Twain"&#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)</pre>
    <hr>
    <h2>Indirect Reflection Use</h2>
    <p>Some of PHP’s built-in functionality indirectly uses reflection—one being the <code>call_user_func()</code> function.</p>
    <h3>The Callback</h3>
    <p>The <code>call_user_func()</code> function accepts an array: the first element pointing to an object, and the second a method’s name. You can supply an optional parameter, which is then passed to the called method. For example:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		var_dump($editor-&gt;getEditorName());&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$editorName = $reflector-&gt;getProperty('name');&#x000A;    		$editorName-&gt;setAccessible(true);&#x000A;    		$editorName-&gt;setValue($editor, 'Mark Twain');&#x000A;    		var_dump($editorName-&gt;getValue($editor));&#x000A;    &#x000A;    		var_dump(call_user_func(array($editor, 'getEditorName')));&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>The following output demonstrates that the code retrieves the proper value:</p>
    <pre>PHPUnit 3.6.11 by Sebastian Bergmann.&#x000A;    &#x000A;    .string(8) "John Doe"&#x000A;    string(10) "Mark Twain"&#x000A;    string(10) "Mark Twain"&#x000A;    Time: 0 seconds, Memory: 2.25Mb&#x000A;    &#x000A;    OK (1 test, 0 assertions)</pre>
    <h3>Using a Variable’s Value</h3>
    <p>Another example of indirect reflection is calling a method by the value contained within a variable, as opposed to directly calling it. For example:</p>
    <pre>// Nettuts.php&#x000A;    &#x000A;    class Nettuts {&#x000A;    &#x000A;    	function publishNextArticle($editor) {&#x000A;    		var_dump($editor-&gt;getEditorName());&#x000A;    &#x000A;    		$reflector = new ReflectionClass($editor);&#x000A;    		$editorName = $reflector-&gt;getProperty('name');&#x000A;    		$editorName-&gt;setAccessible(true);&#x000A;    		$editorName-&gt;setValue($editor, 'Mark Twain');&#x000A;    		var_dump($editorName-&gt;getValue($editor));&#x000A;    &#x000A;    		$methodName = 'getEditorName';&#x000A;    		var_dump($editor-&gt;$methodName());&#x000A;    	}&#x000A;    &#x000A;    }&#x000A;    </pre>
    <p>This code produces the same output as the previous example. PHP simply replaces the variable with the string it represents and calls the method. It even works when you want to create objects by using variables for class names.</p>
    <hr>
    <h2>When Should We Use Reflection?</h2>
    <p>Now that we’ve put the technical details behind us, when should we leverage reflection? Here are a few scenarios:</p>
    <ul>
    <li>
    <strong>Dynamic typing</strong> is probably impossible without reflection.</li>
    <li>
    <strong>Aspect Oriented Programming</strong> listens from method calls and places code around methods, all accomplished with reflection.</li>
    <li>
    <strong>PHPUnit</strong> relies heavily on reflection, as do other mocking frameworks.</li>
    <li>
    <strong>Web frameworks</strong> in general use reflection for different purposes. Some use it to initialize models, constructing objects for views and more. Laravel makes heavy use of reflection to inject dependencies.</li>
    <li>
    <strong>Metaprogramming</strong>, like our last example, is hidden reflection.</li>
    <li>
    <strong>Code analysis frameworks</strong> use reflection to understand your code.</li>
    </ul>
    <hr>
    <h2>Final Thoughts</h2>
    <p>As with any cool toy, use reflection, but don’t abuse it. Reflection is costly when you inspect many objects, and it has the potential to complicate your project’s architecture and design. I recommend that you make use of it only when it actually gives you an advantage, or when you have no other viable option.</p>
    <p>Personally, I’ve only used reflection in a few instances, most commonly when using third party modules that lack documentation. I find myself frequently using code similar to the last example. It’s easy to call the proper method, when your MVC responds with a variable containing “add” or “remove” values.</p>
    <p>Thanks for reading!</p>
    </div>
]]>
</Body>
<Summary>Reflection is generally defined as a program’s ability to inspect itself and modify its logic at execution time. In less technical terms, reflection is asking an object to tell you about its...</Summary>
<Website>http://feedproxy.google.com/~r/nettuts/~3/eUw_aN38rD8/</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27919/guest@my.umbc.edu/74bc27935fcec0082e2c2cf08920df3f/api/pixel</TrackingUrl>
<Tag>css</Tag>
<Tag>development</Tag>
<Tag>html</Tag>
<Tag>javascript</Tag>
<Tag>mysql</Tag>
<Tag>php</Tag>
<Tag>reflection</Tag>
<Tag>sql</Tag>
<Tag>tutorials</Tag>
<Tag>wed</Tag>
<Group token="retired-583">Web Developer - Build Group</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/retired-583</GroupUrl>
<AvatarUrl>https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="original">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/original.jpg?1363101197</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="xlarge">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xlarge.png?1363101197</AvatarUrl>
<AvatarUrl size="large">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/large.png?1363101197</AvatarUrl>
<AvatarUrl size="medium">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/medium.png?1363101197</AvatarUrl>
<AvatarUrl size="small">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/small.png?1363101197</AvatarUrl>
<AvatarUrl size="xsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xsmall.png?1363101197</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/583/fc60f5d7abc2e080599bb6dc465db54d/xxsmall.png?1363101197</AvatarUrl>
<Sponsor>Web Developer - Build Group</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 13:46:16 -0400</PostedAt>
<EditAt>Thu, 18 Apr 2013 13:46:16 -0400</EditAt>
</NewsItem>

<NewsItem contentIssues="true" id="27918" important="false" status="posted" url="https://my3.my.umbc.edu/posts/27918">
<Title>500 Startups Opens Up New Manhattan Co-Working Space. Should You Join?</Title>
<Body>
<![CDATA[
    <div class="html-content">With another co-working space opening its doors, does it make sense for your startup to apply?<br><br><a href="http://da.feedsportal.com/r/163644729972/u/49/f/625555/c/34343/s/2ae17cb2/a2.htm" rel="nofollow external" class="bo"><img src="http://da.feedsportal.com/r/163644729972/u/49/f/625555/c/34343/s/2ae17cb2/a2.img" style="max-width: 100%; height: auto;"></a>
    </div>
]]>
</Body>
<Summary>With another co-working space opening its doors, does it make sense for your startup to apply?</Summary>
<Website>http://feedproxy.google.com/~r/entrepreneur/startingabusiness/~3/yPkpISSOHso/story01.htm</Website>
<TrackingUrl>https://my3.my.umbc.edu/api/v0/pixel/news/27918/guest@my.umbc.edu/3a6f44f4ce1ee0cc8ed55e105aedb1ef/api/pixel</TrackingUrl>
<Group token="entrepreneurship">Alex. Brown Center for Entrepreneurship</Group>
<GroupUrl>https://my3.my.umbc.edu/groups/entrepreneurship</GroupUrl>
<AvatarUrl>https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="original">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/original.jpg?1771000363</AvatarUrl>
<AvatarUrl size="xxlarge">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="xlarge">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xlarge.png?1771000363</AvatarUrl>
<AvatarUrl size="large">https://assets4-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/large.png?1771000363</AvatarUrl>
<AvatarUrl size="medium">https://assets1-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/medium.png?1771000363</AvatarUrl>
<AvatarUrl size="small">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/small.png?1771000363</AvatarUrl>
<AvatarUrl size="xsmall">https://assets2-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xsmall.png?1771000363</AvatarUrl>
<AvatarUrl size="xxsmall">https://assets3-my.umbc.edu/system/shared/avatars/groups/000/000/092/53c03b106bdc6e19e4bf0a41b5a37add/xxsmall.png?1771000363</AvatarUrl>
<Sponsor>The Alex. Brown Center for Entrepreneurship</Sponsor>
<PawCount>0</PawCount>
<CommentCount>0</CommentCount>
<CommentsAllowed>true</CommentsAllowed>
<PostedAt>Thu, 18 Apr 2013 13:30:00 -0400</PostedAt>
</NewsItem>

</News>
